Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
RxSwift Observable.create
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
USAMI Kosuke
October 26, 2016
Programming
0
1.1k
RxSwift Observable.create
http://kanmoba.connpass.com/event/42374/
USAMI Kosuke
October 26, 2016
Tweet
Share
More Decks by USAMI Kosuke
See All by USAMI Kosuke
Onsager代数とその周辺 / Onsager algebra tsudoi
usamik26
0
690
Apple HIG 正式名称クイズ結果発表 / HIG Quiz Result
usamik26
0
240
ゆめみ大技林製作委員会の立ち上げの話 / daigirin project
usamik26
0
370
@ViewLoadingプロパティラッパの紹介と自前で実装する方法 / @ViewLoading property wrapper implementation
usamik26
0
530
これからUICollectionViewを実践活用する人のためのガイド / Guide to UICollectionView
usamik26
1
790
Xcodeとの最近の付き合い方のはなし / Approach To Xcode
usamik26
2
710
UICollectionView Compositional Layout
usamik26
0
850
Coding Swift with Visual Studio Code and Docker
usamik26
0
550
Swift Extension for Visual Studio Code
usamik26
2
1.1k
Other Decks in Programming
See All in Programming
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
380
へんな働き方
yusukebe
0
400
The free-lunch guide to idea circularity
hollycummins
0
260
Claude Code Skill入門
mayahoney
0
400
AI 開発合宿を通して得た学び
niftycorp
PRO
0
140
AHC061解説
shun_pi
0
390
Swift ConcurrencyでよりSwiftyに
yuukiw00w
0
270
AIコードレビューの導入・運用と AI駆動開発における「AI4QA」の取り組みについて
hagevvashi
0
500
SourceGeneratorのマーカー属性問題について
htkym
0
200
ベクトル検索のフィルタを用いた機械学習モデルとの統合 / python-meetup-fukuoka-06-vector-attr
monochromegane
2
470
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
580
Codex の「自走力」を高める
yorifuji
0
1.2k
Featured
See All Featured
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
92
Tell your own story through comics
letsgokoyo
1
850
Discover your Explorer Soul
emna__ayadi
2
1.1k
Visualization
eitanlees
150
17k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
62
52k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
200
Designing for Performance
lara
611
70k
Building AI with AI
inesmontani
PRO
1
800
Documentation Writing (for coders)
carmenintech
77
5.3k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
1.9k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
340
Joys of Absence: A Defence of Solitary Play
codingconduct
1
310
Transcript
RxSwift Observable ͷ࡞Γํ USAMI Kosuke (Fenrir Inc.)
RxSwift 3 released » For Swift 3 » ಛʹɺ໋໊ϧʔϧ͕େ෯ʹมΘ͍ͬͯΔ »
Swift 2 ܥͰ RxSwift 2 ܥΛ͏
RxSwift ͓͞Β͍
Observable ͱ » ҎԼͷ3छྨͷͷ͕ྲྀΕͯ͘ΔඇಉظετϦʔϜ » .next(Element) » .error(Error)ʢετϦʔϜऴྃʣ » .completedʢετϦʔϜऴྃʣ
Observable Λ͏ : جຊܗ hogeObservable .subscribe(onNext: { element in print(element)
}) .addDisposableTo(disposeBag)
Observable Λ͏ : Operator hogeObservable .catchError { ... } .filter
{ ... } .map { ... } ...
ΑΓৄ͘͠ҎԼ͕Φεεϝ » Rx.playground » RxExample.xcodeproj » RxSwift ϦϙδτϦʹ͋Δ
༻ҙ͞Ε͍ͯΔ Observable » UI ύʔπͷ Observable ͍͍ͩͨ༻ҙ͞Ε͍ͯΔ » UIButton.rx.tap »
UITextField.rx.text » UILabel.rx.text
୯७ʹΠϕϯτΛྲྀ͢ Observable let variable = Variable("1") variable.value = "2" variable.value
= "3" let subject = PublishSubject<String>() subject.onNext("A") subject.onNext("B")
ͦΕҎ֎ͷ Observable ʁ » ඞཁʹԠͯࣗ͡Ͱ༻ҙ͢Δ
Observable Λ࡞Δ
Observable.create() let hoge = Observable.create { observer in observer.on(.next("hoge")) observer.on(.completed)
return Disposables.create() }
ϙΠϯτ (1) ΤϥʔΛૹΖ͏ » Observable ͷྑ͞Λੜ͔͢ » ޭ࣌ʹ݁Ռ͚ͩʢnextʣɺࣦഊ࣌ʹΤϥʔ͚ͩʢerrorʣ » ݁ՌͱΤϥʔ͕྆ํฦΔ͜ͱͳ͍ͱ͍͏อূ
» ΤϥʔΛࣺͯΔͷ Observer ଆͷࣄ
ϙΠϯτ (1) ΤϥʔΛૹΖ͏ let hoge = Observable.create { [unowned self]
observer in do { let result = try self.hogehoge() observer.on(.next(result)) observer.on(.completed) } catch let error { observer.on(.error(error)) } return Disposables.create() }
ϙΠϯτ (2) ΩϟϯηϧՄೳʹ͠Α͏ » Observable ͷࢹʢsubscribeʣΛΊΔʢdisposeʣ߹ͷରॲ » dispose ͞Εͨ࣌ͷΩϟϯηϧॲཧ Observable
ଆͷࣄ
ϙΠϯτ (2) ΩϟϯηϧՄೳʹ͠Α͏ let hoge = Observable.create { [unowned self]
observer in let task = self.dataTaskWithRequest(request) { ... } task.resume() return Disposables.create { task.cancel() // dispose ࣌ʹ͕࣮͜͜ߦ͞ΕΔ } }
Ԡ༻ : ΩϟϯηϧϙΠϯτΛ࡞Δ let hoge = Observable.create { [unowned self]
observer in self.scheduler.schedule(()) { _ in hogeTask1() // ͜͜ͰΩϟϯηϧͰ͖ΔΑ͏ʹ͍ͨ͠ hogeTask2() } return Disposables.create { ??? } }
Ԡ༻ : ΩϟϯηϧϙΠϯτΛ࡞Δ let hoge = Observable.create { [unowned self]
observer in let cancelDisposable = BooleanDisposable() let disposable = self.scheduler.schedule(()) { _ in hogeTask1() if cancelDisposable.disposed == true { return } hogeTask2() } return CompositeDisposable(disposable, cancelDisposable) }
Observable Λ࡞Δʹ » Ҏ্ͷ͜ͱΛԡ͓͚͍͍͑ͯ͞Μ͡Όͳ͍Ͱ͠ΐ͏͔
Observable Λ࡞Δͱ » Non Rx ͳੈքΛ Rx ͳੈքʹ͢Δ » Observable
͕࡞ΕΔͱɺͳΜͰ Rx ʹͰ͖Δ