問題タブ [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.

0 投票する
5 に答える
12714 参照

swift - 次のイベントで値を必要としない、Observable の推奨タイプはありますか?

flatMap/のトリガーにのみ使用される Observable がありmapます。したがって、Nextイベントのみが必要であり、値は必要ありません。このようなゴミの値に独自の概念を使用できますが、RxSwift の規則があるかどうか疑問に思っています。

これが私が扱っているものです:

この例でtriggeringObservableは、ライブラリ内のいくつかのプロパティにあり、呼び出す準備ができてrx_observerいることを知らせてくれます。username()

0 投票する
3 に答える
9914 参照

swift - nil の無視/フィルタリング

フィルタリングできる演算子はありますnilか?私が最も近いのは、ここで言及されているソリューションです: https://github.com/ReactiveX/RxSwift/issues/209#issuecomment-150842686

関連する抜粋:

ただし、 after .notNil(),Eはまだオプションであるため、後続の連鎖演算子はwhereがオプションselfとして表示されます。したがって、次のことを行う追加の演算子が必要です。Observer<E>E

私は何かが欠けているに違いない。これは、非常に一般的なニーズのようです。

0 投票する
0 に答える
574 参照

swift - ユーザー制御可能な RxSwift Observer の作成

Rx ベースのネットワーク コードにユーザー主導の更新を実装しようとしています。現在の設計は次のとおりです。

  1. Voidユーザーが更新アクションを開始するたびに値が渡されるシンクを作成する
  2. flatMapそのシンクの最新の.NextイベントがObservable新しいネットワーク呼び出しに
  3. ネットワーク応答を新しいビュー モデルに変換し、それをビュー コントローラーに戻します。

私が夢中になっている部分は、これらのイベントがダウンするためのシンクを作成する方法です。私の現在のコードは次のとおりです。

これで、イベント シンクを作成するコードがここで機能しない理由が明らかになりました。refreshObservableのメソッドに渡されるブロックcreateは、オブザーバーがサブスクライブされると呼び出されるため、refreshSinkそれまでは再割り当てされません。さらに、このオブザーバブルが複数回サブスクライブされている場合、refreshSink変数は再割り当てされます。

だから私の質問はこれです:イベントを手動でプッシュできるを作成するにはどうすればよいですか? Observableまたは、ここで使用できるより良いデザインはありますか?

ReactiveCocoa には、私が探しているようなことを行うpipe静的メソッド onがあることは知っていますが、Rx API には同等のものが見つかりませんでした。Signal

0 投票する
2 に答える
1842 参照

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.

0 投票する
1 に答える
1370 参照

swift - RxSwift でアプリケーションの状態を処理する方法

私は RxSwift と RX の全体的な概念に不慣れで、RxSwift によってリモート サーバーからフェッチされたグローバル アプリケーション状態を処理する方法を知りたいです。

JSON をフェッチし、それをオブジェクトのリストに解析してテーブル ビューに表示する必要があると仮定しましょう。また[{id: object}, ...]、アプリケーションの他のセクションでデータを使用するフォーマットでマップを作成する必要もあります。

例: アプリはサーバーから人物リストを繰り返し取得し、関連するメッセージでアバターとステータスを表示する人物メッセージと同様に人物テーブル ビューのデータを必要とします。したがって、データはビュー モデルに必要でPersonViewModelありMessageViewModel、モデル Person および Message によって構成されます。

そのような構造を持つ正しい方法は次のとおりです。

サーバーから取得してアプリの状態を調整するには:

そしてviewModelsで:

これは正しい方法ですか、それとも別のより良いアプローチが存在しますか? また、(将来)フェッチされたデータを保持したいと思います。ベストプラクティスは何ですか? ありがとうございました。

PSコードのタイプミスがあれば申し訳ありません。コンパイルせずに書いただけです。

0 投票する
1 に答える
161 参照

ios - GMSMapView() の "zoom" プロパティにオブザーバーを追加できますか?

GMSMapViewのズーム(Float)プロパティにオブザーバーを追加したいです。それが可能かどうか、どうすればできるのだろうか?

0 投票する
4 に答える
6903 参照

ios - Rxswift - プログレスバーを表示する方法

API 呼び出し時に進行状況バーを表示し、API 呼び出しが完了したら非表示にする必要があります。以下は、テーブルにデータを入力するために作成したコードです。呼び出されている API の進行状況を表示および非表示にするには、どこで呼び出しを行う必要がありますか? これを行う方法はありRxSwiftますか?

0 投票する
4 に答える
9980 参照

swift - RxSwift unwrap オプションの便利な機能?

unwrapOptional現在、ストリーム内のオプションの入力を安全にアンラップする関数を作成しました。

アーカイブしたいのはflatMap(unwrapOptional)、たとえば、を使用する代わりに便利な関数を作成することです

私がやろうとしたことですが、コンパイルされません...

0 投票する
2 に答える
1251 参照

ios - RxSwift と CLLocation : ユーザーの場所を取得しようとするとクラッシュします

アプリで RSwift ライブラリを使用しています。ネットワーク要求で送信するために、ユーザーの場所を取得しようとしています。この場所を取得するには、Observables を使用する必要があります。これは、ユーザーが場所を承認しなかった場合に関数がエラーをスローする必要があるためです。

このアルゴリズムは、(UI をフリーズさせないために) メイン スレッドとは別のスレッドで実行される多数の Observable の連結配列の一部です。メインスレッドで実行しないとクラッシュし、クラッシュログが次のようになるため、メインスレッドで「ユーザーの場所を取得」機能を実行する必要があります。

上記のコードには、地理位置情報ヘルパー init (これはシングルトンです) と、ユーザーの場所 (またはエラー) を取得するために実行されるメソッドがあります。

RXSwift ジオロケーションの例 ( https://github.com/ReactiveX/RxSwift/pull/429 ) に、ドライバーで処理できるクラスが表示されますが、実際にはエラーが必要であり、ドライバーはエラーを返すことができません。

これを達成する方法について誰かが私を助けてくれれば幸いです。

私はすでに " .observeOn(MainScheduler.instance) " を 2 つのオブザーバブルに追加しようとしましたが、UI がフリーズします。UI をフリーズせずにこれを行うより良い方法があるかもしれません。

ありがとう