FRMSKI開発ブログ

プログラミング、UI / UX、仕事、読書のことなど、日々の記録を綴ります

RxSwiftの基本を学ぶ

RxとはReactive Extensionsの略で非同期処理やイベント処理などを宣言的に記述することができる便利なライブラリです。 RxのSwift実装なのでRxSwiftと言います。

インストール方法

pod 'RxSwift'をPodfileに記述しpod installでインストールできます。

Observableで通知を受け取る

ObservableはRxSwiftの基本となる考え方でプロパティを監視するためのクラスです。通知するものは以下の3つ。

種類 説明
onNext 通常のイベントを送る。複数回可能。
onError エラーの発生を通知する。発生後はイベントが発生しない。
onComplete 完了を通知。発生後はイベントが発生しない。

これらのイベントは下記のようなMarble Diagramという図で表されます。
f:id:frmski:20181011165814p:plain:w300
f:id:frmski:20181011165820p:plain:w300
丸がonNext、縦棒がonComplete、バツがonErrorです。

Subjectでイベントを発行する

RxではPublishSubjectというものがあり、これはObservableと同じ機能を持っています。

その他のSubject

BehaviorSubject

BehaviorSubjectはsubscribe時に、一つ過去のevent(最初にsubscribeする場合は初期値)を受け取れるSubject。

ReplySubject

ReplaySubjectはオブザーバがいつサブスクライブするかに関わらずソースObservable(s)が送信した全てのアイテム(イベント)をオブザーバに送信する。

Variable

VariableはBehaviorSubjectをラップする。BehaviorSubjectに対しての利点は、Variableは明示的に complete または error になることがない。また、Variableはdeallocated時に自動的に完了する。

まとめ

まだまだ使いこなすと便利な機能がたくさんありますので、応用編も近いうちに書きたいと思います。

参考サイト

オブザーバーパターンから始めるRxSwift入門
【Swift】RxSwiftのPlaygroundを読む②
RxSwift 入門 その2 - タコさんブログ
【iOS Swift入門 #299】[RxSwift]バインドできるプロパティを作成する - Swift,Objective-Cプログラミング ~ iOS ~