[iOS, RxSwift] Operators

ObservableTypeとObservableクラスには複雑な論理を実装するためのメソッドがたくさんあります。そのメソッドたちをOperatorと言います。

Operatorは非同期で入力を受け取り、出力のみ生成するためOperatorたちで適切に組み合わせて使うことができます。RxOperatorsはObservableにより入られた値を処理し、最終の値が出た時放出します。

UIDevice.rx.orientation
 .filter { value in
   return value != .landscape
 }
.map { _ in
   return "Portrait!!!!!!!!!!"
 }
 .subscribe(onNext: { string in
   showAlert(text: string)
 })

画像1

1. filterは.landscapeではない値が入った場合のみreturnを行い、デバイスの方向がlandscapeであればそれ以外のコードは処理を行えず値を流します。

2. .portraitが入ったらmapはfilterからreturnされたvalue(.portrait)を受け取り、Stringに変換してreturnします。

3. 最後に、subscribeでonNextイベントを行うことにより、mapから流れてきたStringの値を表示させるshowAlertを呼び出す結果になります。

Operatorは常に入力されたデータを通じて結果を出力するので、単一のOperatorが独自でできることより色んなOperatorたちを組み合わせて使うことでもっと多くのことができるようになります。

この記事が気に入ったらサポートをしてみませんか?