RxSwift
Observableを再帰的に実行するサンプル実装をしたので、軽くメモしておきます もっといい書き方あったらコメントで教えてください! どんな状況? やりたいこととしては、データIDの配列からページネーションしながらIDを取り出し、そのIDを元にデータを取得…
Observableでエラーが発生した時の再度実行に関するメモです retry, retryWhen Observableでエラーが発生した場合、再度subscribeするには主にretry・retryWhenオペレーターが使えます。 retryオペレータはシンプルで、エラーが発生した場合に無条件でObserv…
Maybeとは? success・error・completedのいずれかのイベントで、最初のイベントのみをキャプチャするObservableです。つまり、何らかのイベントが流れた時点で、Obsrevableはdisposeされます。 Singleと混合しがちですが、Singleではcompletedイベントを送…
久しぶりにRxSwiftを触ろうと記事を漁っていたら、ConnectableObservableというObservableが出てきて、これなんだっけ?となったので軽くメモ♀️ 結論 ConnectableObservableはHotなObservableです! 完。 となるとちょっと短いので、ちょっと解説すると。 …
結論 下記のようにKVOでcontentSizeを取得することができます。ちなみにこの状態で返る値はObservable<CGSize?>になります。 scrollView.rx.observe(CGSize.self, "contentSize") // Observable<CGSize?> 今回は、heightのみでいいのと、アンラップした状態で値をリッスンした</cgsize?></cgsize?>…
イベントをenumに変える便利なオペレータがあったことを最近知ったので、メモしておきます👷♀️ reactivex.io .materialize() .materialize()は、ストリームに流れる各イベントを、それぞれEventというenumに変換します。 @frozen public enum Event<Element> { /// Nex</element>…
本日はRxSwift CommunityのActionライブラリを使った、便利なObservableエラーの取り回しについて簡単に紹介したいと思います♀️ github.com こんな時どうする? Observableで流れてくるErrorを取得したいけど、Errorが流れてきた場合にストリームを中断した…
下記のようにsubscribe時に必要な処理を全て書いても問題ないですが、Logger.log(text)はイベント処理するための本質的なメソッドではないため、このような状態を許容しているとどんどんコードが見づらくなっていくことが予想できます。 incrementalSearchTe…
結論 あるObservableの最新値をストリームに合成したい場合は.withLatestFrom()オペレーターを使用します。 ob1.withLatestFrom(ob2) .subscribe(onNext: { ob1, ob2 in // TODO: }) .disposed(by: disposeBag) 短いですが、本日も以上になります その他の記…
結論 下記のようにすることで、observableから流れてくる最初のイベントから500msの間隔があくまで、次のイベントをストリームに流さないようにすることができます。例えば、UIScrollViewなんかで最初のスクロールイベントのみを取得したい場合なんかに有効…
RxSwift で TextField.text の変更をリッスンしたい時、下記のように書こうとした経験がある人は結構多いかと思います textField.rx.text .subscribe(onNext: { text in print(text) }) .disposed(by: disposeBag) あまり RxSwift に馴染みのない場合、これ…
今日はタイトルの通り、Firebase Storage で JPEG ファイルを Swift でアップロードする方法を紹介したいと思います♀️ 使ったもの 今回の実装をする上で使用したものは下記になります。 Firebase/Storage 6.34.0 RxSwift 6.0.0-rc.1 Xcode12.0.1(Swift5.3) …
今回は RxSwift で Realm のデータ(Object) の更新を通知する方法を簡単に紹介します♀️ それではやっていく データの変更を通知するための Observable を返すメソッドは下記のようになります。Realm Object のインスタンスメソッド observe でデータの変更…
PublishSubject に onError() でError を流した場合、次回以降同一の Subject オブジェクトをサブスクライブすると、初回時に Error が流れてくるようです🧑🔧 具体的には下記のような感じです。 let relay = PublishSubject<String>.init() let disposeBag = DisposeBa</string>…
個人で開発中のアプリで RxSwift を使用した簡易インクリメンタルサーチを実装したので、その方法を簡単にまとめたいと思います 作業していくっ 今回行うインクリメンタルサーチの仕様は下記の通りで、入力した ID が使用可能かどうかを調べるためにこの機…
Hot な Observable から流れてくるイベントで、特定の回数だけイベントを受け取りたいということはよくあるかと思います。そんな時は .take() を使って回数を絞ることができます。 下記はストリームに流れてきたイベントを Observable が一度受信したら、購…
今回は RxSwift(RxCocoa) でたびたび使用する Subject・Relay の違いや Observable との違いについて簡単にまとめようと思います。また、Trait などはまた別の記事で触れようかと思います。 Subject・Relay とは? これらのクラスはイベントの検知もできます…
RxSwift などで処理をつなげて書いていると、ここはメインスレッドで、ここはバックグランドスレッドでなどと、処理によってスレッドを切り替えたい場合があるかと思います。そんな時は、Observable のプロパティとして提供されている subscribeOn または、o…
今回は同じ型の非同期処理を RxSwift でまとめる際に使用する concat と merge の使い方と挙動を簡単にまとめとこうと思います。 concat concat() は複数の非同期処理を渡された順番で順次処理を行っていきます。サンプルは次のようになります。 let ob1 = O…