O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

RxSwift

2.621 visualizações

Publicada em

http://kanmoba.connpass.com/event/18762/

Publicada em: Software
  • Seja o primeiro a comentar

RxSwift

  1. 1. RxSwift
  2. 2. About me 4 宇佐見 公輔 (@usamik26) 4 フェンリル株式会社 4 iOS アプリエンジニア 4 0x29歳になりました
  3. 3. Reactive Programming
  4. 4. Reactive Programming 4 イベントや値の関係性(データフロー)を記述 4 その記述で、一方の変化を他方に伝播 4 メッセージ送信が隠 される 4 データバインディングは Reactive な仕組みといえる
  5. 5. Functional Reactive Programming 4 非同期データストリーム 4 時間軸に沿って値が流れるリスト 4 ストリームに対するリスト操作 4 map や filter といった関数型のイディオム
  6. 6. RP / FRP の利点 4 イベント駆動処理が書きやすい 4 非同期処理が書きやすい 4 GUI プログラミングと相性が良い
  7. 7. Reactive Programming for iOS
  8. 8. Reactive Programming for iOS 4 ReactiveCocoa 4 ReactKit 4 RxSwift 4 ひとくちに Reactive といっても考え方がちょっとずつ違 う 4 それぞれに良さがある
  9. 9. RxSwift
  10. 10. RxSwift の特徴 4 ReactiveX ファミリー 4 最近正式に加わった 4 Swift ネイティブ 4 コア(RxSwift)は Swift のみ 4 一部(RxCocoa)は Objective-C を含む
  11. 11. ReactiveX 4 http://reactivex.io 4 各言語版がある 4 Rx.NET (C#) 4 RxJava 4 RxJS 4 RxSwift 4 ・・・など 4 Learn once, apply anywhere
  12. 12. RxSwift の導入 4 Dynamic Library として導入(iOS 8 以降) 4 CocoaPods 4 Carthage 4 プロジェクト内に組み込み(iOS 7 対応) 4 CocoaSeeds
  13. 13. RxSwift / RxCocoa 4 RxSwift 4 Observable / 各種 Operator / Scheduler など 4 RxCocoa 4 UIKit / NSURLSession / KVO など
  14. 14. Examples
  15. 15. Examples 4 以下を見るとよい 4 README 4 RxExample プロジェクト
  16. 16. Examples 1 combineLatest(firstNameLabel.rx_text, lastNameLabel.rx_text) { $0 + " " + $1 } >- map { "Greeting ($0)" } >- subscribeNext { greeting in greetingLabel.text = greeting }
  17. 17. Examples 2 let userRequest: Observable<User> = API.getUser("me") let friendsRequest: Observable<[Friend]> = API.getFriends("me") zip(userRequest, friendsRequest) { user, friends in return (user, friends) } >- observeOn(MainScheduler.sharedInstance) >- subscribeNext { (user, friends) in // bind to UI }
  18. 18. Examples 3 searchTextField.rx_text >- throttle(0.5, MainScheduler.sharedInstance) >- distinctUntilChanged() >- map { query in API.getSearchResults(query) >- retry(3) >- startWith([]) >- catchError([]) } >- switchLatest >- map { results in // bind to UI }
  19. 19. Documents 4 ReactiveX 本家が分かりやすい 4 http://reactivex.io 4 RxSwift 4 Documentation/API.md など
  20. 20. RxSwift 2.0
  21. 21. RxSwift 2.0 4 現在開発中(Git ブランチ rxswift-2.0) 4 Swift 2 対応 4 演算子が >- から . に変更 4 内部ロジック : RxResult から try - catch に
  22. 22. RxSwift おすすめ

×