Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
RxSwift x Realm
Search
USAMI Kosuke
September 29, 2015
Programming
0
260
RxSwift x Realm
Realm meetup #7
http://realm.connpass.com/event/19719/
USAMI Kosuke
September 29, 2015
Tweet
Share
More Decks by USAMI Kosuke
See All by USAMI Kosuke
Onsager代数とその周辺 / Onsager algebra tsudoi
usamik26
0
670
Apple HIG 正式名称クイズ結果発表 / HIG Quiz Result
usamik26
0
210
ゆめみ大技林製作委員会の立ち上げの話 / daigirin project
usamik26
0
350
@ViewLoadingプロパティラッパの紹介と自前で実装する方法 / @ViewLoading property wrapper implementation
usamik26
0
510
これからUICollectionViewを実践活用する人のためのガイド / Guide to UICollectionView
usamik26
1
780
Xcodeとの最近の付き合い方のはなし / Approach To Xcode
usamik26
2
690
UICollectionView Compositional Layout
usamik26
0
830
Coding Swift with Visual Studio Code and Docker
usamik26
0
540
Swift Extension for Visual Studio Code
usamik26
2
1.1k
Other Decks in Programming
See All in Programming
脳の「省エネモード」をデバッグする ~System 1(直感)と System 2(論理)の切り替え~
panda728
PRO
0
110
dotfiles 式年遷宮 令和最新版
masawada
1
810
AI時代を生き抜く 新卒エンジニアの生きる道
coconala_engineer
1
390
GISエンジニアから見たLINKSデータ
nokonoko1203
0
180
Canon EOS R50 V と R5 Mark II 購入でみえてきた最近のデジイチ VR180 事情、そして VR180 静止画に活路を見出すまで
karad
0
130
LLMで複雑な検索条件アセットから脱却する!! 生成的検索インタフェースの設計論
po3rin
4
920
ローカルLLMを⽤いてコード補完を⾏う VSCode拡張機能を作ってみた
nearme_tech
PRO
0
130
実はマルチモーダルだった。ブラウザの組み込みAI🧠でWebの未来を感じてみよう #jsfes #gemini
n0bisuke2
3
1.3k
Tinkerbellから学ぶ、Podで DHCPをリッスンする手法
tomokon
0
140
これならできる!個人開発のすゝめ
tinykitten
PRO
0
120
大規模Cloud Native環境におけるFalcoの運用
owlinux1000
0
180
TerraformとStrands AgentsでAmazon Bedrock AgentCoreのSSO認証付きエージェントを量産しよう!
neruneruo
4
1.4k
Featured
See All Featured
End of SEO as We Know It (SMX Advanced Version)
ipullrank
2
3.8k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
170
RailsConf 2023
tenderlove
30
1.3k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
For a Future-Friendly Web
brad_frost
180
10k
Building the Perfect Custom Keyboard
takai
1
660
Leadership Guide Workshop - DevTernity 2021
reverentgeek
0
160
Six Lessons from altMBA
skipperchong
29
4.1k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
390
The Cost Of JavaScript in 2023
addyosmani
55
9.4k
From π to Pie charts
rasagy
0
86
Side Projects
sachag
455
43k
Transcript
3Y4XJGUY3FBMN Ӊࠤݟެี 3FBMNNFFUVQ
ࣗݾհ w Ӊࠤݟެี !VTBNJL w େࡕࡖࢢࡏॅ w ϑΣϯϦϧגࣜձࣾ w
ΞϓϦέʔγϣϯڞಉ։ൃ෦ w J04ΞϓϦΤϯδχΞ ΞυϨεόʔ͢ΒऔΓͬͨ ڀۃͷઌతϒϥβ
ࠓͷ༰ w 3Y4XJGUͷհ w 3Y4XJGUͱ3FBMNͱͷ࿈ܞ
3Y4XJGU
None
3FBDUJWF1SPHSBNNJOH w ΠϕϯτͷؔΛهड़ w ҰํͷมԽΛଞํʹ w ϝοηʔδૹ৴ͷӅṭ w σʔλόΠϯσΟϯά3FBDUJWFͳΈͷҰछ
'VODUJPOBM3FBDUJWF1SPHSBNNJOH w ඇಉظσʔλετϦʔϜ w ࣌ؒ࣠ʹԊ͕ͬͯྲྀΕΔϦετ w ετϦʔϜʹର͢ΔϦετૢ࡞ w mapfilterͱ͍ͬͨؔܕͷΠσΟΦϜ
31'31ͷར w Πϕϯτۦಈॲཧ͕ॻ͖͍͢ w ඇಉظॲཧ͕ॻ͖͍͢ w ͕ͨͬͯ͠ɺ(6*ϓϩάϥϛϯάͱ૬ੑ͕Α͍
3FBDUJWF1SPHSBNNJOHGPSJ04 w 3FBDUJWF$PDPB w 3FBDU,JU w 3Y4XJGU w ͦΕͧΕʹྑ͕͋͞Δ
3FBDUJWF9ϑΝϛϦʔ w 3Y/&5 $ w 3Y+4 w 3Y+BWB w
3Y4XJGU w ɾɾɾͳͲ
3Y4XJGU w 4XJGUରԠ൛ w όʔδϣϯBMQIB w J04Ҏ߱ʢJ04Ҏ͕߱·͍͠ʣ w جຊతͳͱ͜Ζे͑Δঢ়ଶ w
࣮Ҋ݅Ͱ࠾༻த
3Y4XJGUͷ࣮ࡍ
3Y4XJGU3Y$PDPB w 3Y4XJGU w 0CTFSWBCMF֤छ0QFSBUPS4DIFEVMFSͳͲ w 3Y$PDPB w 6*,JU/463-4FTTJPO,70ͳͲ
0CTFSWBCMF w ඇಉظσʔλετϦʔϜΛ͋ΒΘ͢
ྫɿΠϕϯτॲཧ button.rx_tap .subscribeNext { _ in // ボタンがタップされたときの処理 } .addDisposableTo(disposeBag)
ྫɿඇಉظॲཧ URLSession.rx_response(request) .subscribeOn(sessionScheduler) .map { (data, response) in // バックグラウンド処理
} .observeOn(mainScheduler) .map { data in // UI処理 }
ྫɿετϦʔϜΛͭ͘Δɿ/463-3FTQPOTFͷ߹ func rx_response(request: NSURLRequest) -> Observable<NSData!, NSURLResponse!> { return create
{ observer in // request を送信してレスポンスを受け取る if 失敗 { observer.on(.Error(error)) } else { observer.on(.Next(data, response)) observer.on(.Completed) } return AnonymousDisposable { /* キャンセル処理 */ } } }
ྫɿετϦʔϜΛͭ͘Δɿผͷखஈ let items = PublishSubject<Item>() // Observable<Item> // データを流す items.on(.Next(item))
// 終了 items.on(.Completed) // エラー終了 items.on(.Error(error))
ྫɿ࡞ͬͨετϦʔϜΛ͏ items .filter { _ in // 不要なデータを捨てる } .subscribeNext
{ _ in // データに対する処理 } .addDisposableTo(disposeBag)
3Y4XJGUY3FBMN
3FBMNͷσʔλऔಘ w 3FBMNͷΫΤϦͰ͍͍͚Ͳɾɾɾ w 3YͰσʔλΛऔಘ͍ͨ͠ʢ0CTFSWBCMFͰѻ͍͍ͨʣ w %#ΞΫηεͱ3Yͷॲཧ͕ࠞࡏ͢Δͱհ w εϨουΛ·͙ͨ߹ΛͲ͏͢Δʁ
3Y+BWBͷέʔεΛࢀߟʹ͢Δ
ϞσϧΫϥεΛ͚Δ w ͻͱͭͷରʹରͯ͠ɺ;ͨͭͷϞσϧΫϥεΛͭ͘Δ w 3FBMNͷ0CKFDUܕͷϞσϧ w ඇ3FBMNͷϞσϧ w Ͱ͋Δ͜ͱ൱ఆͰ͖ͳ͍ɾɾɾ w
%#༻ͷϞσϧͱ7JFX༻ͷϞσϧɺͱࢥ͑ڐ༰ൣғ
հΛͭ͘Δ w 3FBMN%BUB4FSWJDF w 3FBMNͷΫΤϦ͔Β3FTVMUTΛಘΔ w 3FBMNͷ3FTVMUT͔Β7JFX༻ͷϞσϧʹม w 7JFX༻ͷϞσϧͷ0CTFSWBCMFΛग़ྗ
3FBMNͷΞΫηε w 3FBMN0CTFSWBCMF w 3FBMNͷΞΫηεॲཧΛҰՕॴʹ·ͱΊΔ w ʢલड़ͷ3FBMN%BUB4FSWJDFͰ3FBMNΞΫηε ͢Δ͜ͱՄೳ͕ͩɺࡶʹͳΔʣ
͍ํ RealmDataService.items .map { item in // モデルの処理 } .addDisposableTo(disposeBag)
3FBMNͷॻ͖ࠐΈ w ಉ༷ͷΈͰॻ͖ࠐΈʹରԠͰ͖Δ w 3FBMN%BUB4FSWJDFʹσʔλ࡞*'ΛՃ w 3FBMN0CTFSWBCMFΛτϥϯβΫγϣϯʹରԠ
·ͱΊ
·ͱΊ w 3Y4XJGUͷհ w 3Y4XJGUͷ࣮ࡍ w 3Y4XJGUͱ3FBMNͱͷ࿈ܞ w Ұ͍ΕΔͱΑ͍ w
3Yͱ3FBMNΛͪΌΜͱ͚ͯߟ͑Δͷ͕Α͍
None