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
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
680
Apple HIG 正式名称クイズ結果発表 / HIG Quiz Result
usamik26
0
230
ゆめみ大技林製作委員会の立ち上げの話 / daigirin project
usamik26
0
360
@ViewLoadingプロパティラッパの紹介と自前で実装する方法 / @ViewLoading property wrapper implementation
usamik26
0
530
これからUICollectionViewを実践活用する人のためのガイド / Guide to UICollectionView
usamik26
1
780
Xcodeとの最近の付き合い方のはなし / Approach To Xcode
usamik26
2
700
UICollectionView Compositional Layout
usamik26
0
840
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
Unicodeどうしてる? PHPから見たUnicode対応と他言語での対応についてのお伺い
youkidearitai
PRO
1
2.5k
CSC307 Lecture 07
javiergs
PRO
0
550
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
1
230
AI によるインシデント初動調査の自動化を行う AI インシデントコマンダーを作った話
azukiazusa1
1
730
AI Schema Enrichment for your Oracle AI Database
thatjeffsmith
0
280
組織で育むオブザーバビリティ
ryota_hnk
0
170
Vibe Coding - AI 驅動的軟體開發
mickyp100
0
170
IFSによる形状設計/デモシーンの魅力 @ 慶應大学SFC
gam0022
1
300
16年目のピクシブ百科事典を支える最新の技術基盤 / The Modern Tech Stack Powering Pixiv Encyclopedia in its 16th Year
ahuglajbclajep
5
1k
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
230
開発者から情シスまで - 多様なユーザー層に届けるAPI提供戦略 / Postman API Night Okinawa 2026 Winter
tasshi
0
200
Package Management Learnings from Homebrew
mikemcquaid
0
220
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
77
5.3k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
200
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
0
1.1k
Making the Leap to Tech Lead
cromwellryan
135
9.7k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
120
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
300
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
110
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Crafting Experiences
bethany
1
48
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
57
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.3k
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 ʹͰ͖Δ