中村的雑記

技術に関する記事を書いていきます。iOSエンジニア->Railsエンジニア。

Rx再入門

Rxに再入門しました

Rxに再入門します。

教材

https://www.raywenderlich.com/1228891-getting-started-with-rxswift-and-rxcocoa

メモ

・BehaviorRelay

BehaviorRelayは配列を表す型である。

宣言は下記のように行う。

let a: BehaviorRelay<[A]> = BehaviorRelay(value: [])

BehaviorRelayはクラスであり、valueというプロパティを持っている。valueには今Aの配列が入っている。

BehaviorRelayの効果はasObservable()というメソッドから来ている。

Observerを加えると、配列に変化があった際に私たちに変化があったことを伝えてくれる。

欠点としては、配列の中身に変更を加える時、accept(_:)を介して処理を呼ぶ必要がある。

BehaviorRelayを参照する時は、a.valueという風に呼ぶ。

値をからにしたい時、hoge.a.accept([])を使う。

中身を足す時は

let piyo =fuga[indexPath.row]
let newValue =hoge.a.value + [piyo]
hoge.a.accept(newValue)

・RxCocoa UIKit周りをreactiveにできるライブラリー。

・just(_:) 対象は変化しないが、Observableにしたい時に使う。

・.rx RxCocoaのextensionにアクセスして関連クラスを呼び出す時に使う。 ・.bind 下の例だとhogehogeとtableViewを紐づけるときに使う。

hogehoge
.bind(to: tableView
    .rx

・MainScheduler 処理を全部メインスレッドで行いたい時に使う。

チュートリアルを終えて

めちゃくちゃわかりやすかったです! ただチュートリアル通りだと最後のクレジットカードの番号入力でクラッシュしますね。。 ちょっと原因調査したい。(そして原因が分かったら作者の方に連絡差し上げたい。)