Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
RxSwift Observable.create
Search
USAMI Kosuke
October 26, 2016
Programming
1.1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
RxSwift Observable.create
http://kanmoba.connpass.com/event/42374/
USAMI Kosuke
October 26, 2016
More Decks by USAMI Kosuke
See All by USAMI Kosuke
Onsager代数とその周辺 / Onsager algebra tsudoi
usamik26
0
730
Apple HIG 正式名称クイズ結果発表 / HIG Quiz Result
usamik26
0
290
ゆめみ大技林製作委員会の立ち上げの話 / daigirin project
usamik26
0
420
@ViewLoadingプロパティラッパの紹介と自前で実装する方法 / @ViewLoading property wrapper implementation
usamik26
0
570
これからUICollectionViewを実践活用する人のためのガイド / Guide to UICollectionView
usamik26
1
840
Xcodeとの最近の付き合い方のはなし / Approach To Xcode
usamik26
2
750
UICollectionView Compositional Layout
usamik26
0
900
Coding Swift with Visual Studio Code and Docker
usamik26
0
620
Swift Extension for Visual Studio Code
usamik26
2
1.2k
Other Decks in Programming
See All in Programming
sbt 2.0: takeoff
eed3si9n
0
160
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
190
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
290
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
27
30k
Agents on Rails - Rails at Scale 2026
irinanazarova
0
540
R8 の設定見直しでアプリサイズ削減
andpad
0
220
Long Living Tokens, Die, Die, Die! (or: The One Ring is Banned in Modern)
sylph01
0
260
コーディング自動化の次へ。人の介入をゼロにするファクトリーとサポートAIによる実践
timakin
4
3.1k
S3 TablesのIcebergデータに、AIエージェントからアクセスしてみた / 20261016developersio2026joetsu-accessing-iceberg-in-s3tables-via-agent
kasacchiful
PRO
0
120
複雑なUIコンポーネントとの ⻑い付き合い⽅:波及するバグからテスト戦略を経て、安全な再設計へ
mixplace
0
410
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
2
1.6k
Androidだけじゃない、DroidKaigiで広がった私の技術スタック
akkeylab
0
130
Featured
See All Featured
A Soul's Torment
seathinner
8
3.8k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
730
Game over? The fight for quality and originality in the time of robots
wayneb77
1
300
What does AI have to do with Human Rights?
axbom
PRO
1
2.5k
Mind Mapping
helmedeiros
1
400
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
Between Models and Reality
mayunak
4
500
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
320
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
990
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
500
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 ʹͰ͖Δ