iOSエンジニアのつぶやき

毎朝8:30に iOS 関連の技術について1つぶやいています。まれに釣りについてつぶやく可能性があります。

【RxSwift】ストリームに影響を与えない処理を追加する

下記のようにsubscribe時に必要な処理を全て書いても問題ないですが、Logger.log(text)はイベント処理するための本質的なメソッドではないため、このような状態を許容しているとどんどんコードが見づらくなっていくことが予想できます。

    incrementalSearchTextRelay.asObservable()
        .subscribe(onNext: {[weak textField] text in
            Logger.log(text)
            textField?.text = text
        })
        .disposed(by: disposeBag)

そんな時はdo()オペレーターを使って、ストリームに影響を与えず処理を行うとコードの可読性が向上します。

    incrementalSearchTextRelay.asObservable()
         .do(onNext: {
            Logger.log($0)
        })
        .subscribe(onNext: {[weak textField] text in
            textField?.text = text
        })
        .disposed(by: disposeBag)

てな感じで本日も以上となります👷‍♀️

参考

その他の記事

yamato8010.hatenablog.com

yamato8010.hatenablog.com

yamato8010.hatenablog.com