問題タブ [rx-swift]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
swift - 次のイベントで値を必要としない、Observable の推奨タイプはありますか?
flatMap
/のトリガーにのみ使用される Observable がありmap
ます。したがって、Next
イベントのみが必要であり、値は必要ありません。このようなゴミの値に独自の概念を使用できますが、RxSwift の規則があるかどうか疑問に思っています。
これが私が扱っているものです:
この例でtriggeringObservable
は、ライブラリ内のいくつかのプロパティにあり、呼び出す準備ができてrx_observer
いることを知らせてくれます。username()
swift - nil の無視/フィルタリング
フィルタリングできる演算子はありますnil
か?私が最も近いのは、ここで言及されているソリューションです: https://github.com/ReactiveX/RxSwift/issues/209#issuecomment-150842686
関連する抜粋:
ただし、 after .notNil()
,E
はまだオプションであるため、後続の連鎖演算子はwhereがオプションself
として表示されます。したがって、次のことを行う追加の演算子が必要です。Observer<E>
E
私は何かが欠けているに違いない。これは、非常に一般的なニーズのようです。
swift - ユーザー制御可能な RxSwift Observer の作成
Rx ベースのネットワーク コードにユーザー主導の更新を実装しようとしています。現在の設計は次のとおりです。
Void
ユーザーが更新アクションを開始するたびに値が渡されるシンクを作成するflatMap
そのシンクの最新の.Next
イベントがObservable
新しいネットワーク呼び出しに- ネットワーク応答を新しいビュー モデルに変換し、それをビュー コントローラーに戻します。
私が夢中になっている部分は、これらのイベントがダウンするためのシンクを作成する方法です。私の現在のコードは次のとおりです。
これで、イベント シンクを作成するコードがここで機能しない理由が明らかになりました。refreshObservable
のメソッドに渡されるブロックcreate
は、オブザーバーがサブスクライブされると呼び出されるため、refreshSink
それまでは再割り当てされません。さらに、このオブザーバブルが複数回サブスクライブされている場合、refreshSink
変数は再割り当てされます。
だから私の質問はこれです:イベントを手動でプッシュできるを作成するにはどうすればよいですか? Observable
または、ここで使用できるより良いデザインはありますか?
ReactiveCocoa には、私が探しているようなことを行うpipe
静的メソッド onがあることは知っていますが、Rx API には同等のものが見つかりませんでした。Signal
swift - RxSwift Driver gets disposed after first value
I've just started playing around with Rx and decided to try out making a simple OSX app using RxSwift.
Since my app has a login form, I've found that GithubSignup example is pretty similar to what I'm doing.
I'm, however having an issue that my Drivers
get disposed after first value is emitted from them, and I can't figure out how or why. Since my code is really similar to one from the Github example, I must be overlooking something.
Here is my ViewModel:
And here is my ViewController:
Here is an example when I attach ".debug()" to credentialsEmpty
driver on LoginVM
:
It is getting disposed as soon as value is emitted after initial one.
swift - RxSwift でアプリケーションの状態を処理する方法
私は RxSwift と RX の全体的な概念に不慣れで、RxSwift によってリモート サーバーからフェッチされたグローバル アプリケーション状態を処理する方法を知りたいです。
JSON をフェッチし、それをオブジェクトのリストに解析してテーブル ビューに表示する必要があると仮定しましょう。また[{id: object}, ...]
、アプリケーションの他のセクションでデータを使用するフォーマットでマップを作成する必要もあります。
例: アプリはサーバーから人物リストを繰り返し取得し、関連するメッセージでアバターとステータスを表示する人物メッセージと同様に人物テーブル ビューのデータを必要とします。したがって、データはビュー モデルに必要でPersonViewModel
ありMessageViewModel
、モデル Person および Message によって構成されます。
そのような構造を持つ正しい方法は次のとおりです。
サーバーから取得してアプリの状態を調整するには:
そしてviewModelsで:
これは正しい方法ですか、それとも別のより良いアプローチが存在しますか? また、(将来)フェッチされたデータを保持したいと思います。ベストプラクティスは何ですか? ありがとうございました。
PSコードのタイプミスがあれば申し訳ありません。コンパイルせずに書いただけです。
ios - GMSMapView() の "zoom" プロパティにオブザーバーを追加できますか?
GMSMapViewのズーム(Float)プロパティにオブザーバーを追加したいです。それが可能かどうか、どうすればできるのだろうか?
ios - Rxswift - プログレスバーを表示する方法
API 呼び出し時に進行状況バーを表示し、API 呼び出しが完了したら非表示にする必要があります。以下は、テーブルにデータを入力するために作成したコードです。呼び出されている API の進行状況を表示および非表示にするには、どこで呼び出しを行う必要がありますか? これを行う方法はありRxSwift
ますか?
swift - RxSwift unwrap オプションの便利な機能?
unwrapOptional
現在、ストリーム内のオプションの入力を安全にアンラップする関数を作成しました。
アーカイブしたいのはflatMap(unwrapOptional)
、たとえば、を使用する代わりに便利な関数を作成することです
私がやろうとしたことですが、コンパイルされません...
ios - RxSwift と CLLocation : ユーザーの場所を取得しようとするとクラッシュします
アプリで RSwift ライブラリを使用しています。ネットワーク要求で送信するために、ユーザーの場所を取得しようとしています。この場所を取得するには、Observables を使用する必要があります。これは、ユーザーが場所を承認しなかった場合に関数がエラーをスローする必要があるためです。
このアルゴリズムは、(UI をフリーズさせないために) メイン スレッドとは別のスレッドで実行される多数の Observable の連結配列の一部です。メインスレッドで実行しないとクラッシュし、クラッシュログが次のようになるため、メインスレッドで「ユーザーの場所を取得」機能を実行する必要があります。
上記のコードには、地理位置情報ヘルパー init (これはシングルトンです) と、ユーザーの場所 (またはエラー) を取得するために実行されるメソッドがあります。
RXSwift ジオロケーションの例 ( https://github.com/ReactiveX/RxSwift/pull/429 ) に、ドライバーで処理できるクラスが表示されますが、実際にはエラーが必要であり、ドライバーはエラーを返すことができません。
これを達成する方法について誰かが私を助けてくれれば幸いです。
私はすでに " .observeOn(MainScheduler.instance) " を 2 つのオブザーバブルに追加しようとしましたが、UI がフリーズします。UI をフリーズせずにこれを行うより良い方法があるかもしれません。
ありがとう