問題タブ [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 投票する
1 に答える
2167 参照

ios - delaySubscription が rx_tap で機能しない

これは、問題を再現する私のコードの短いバージョンです:

ボタンをタップしてから2秒後に「遅延」信号を発したいのですが、そのような運はありません。実際に何が起こるか: ボタンを初めてタップすると、「ソース」が起動しますが、他には何も起こりません。その後、もう一度タップすると、「ソース」と「遅延」が同時に発火します。スレッドの問題だと思ったので、observeOn(MainScheduler.sharedInstance)どこにでも追加しようとしましたが、役に立ちませんでした。何か案は?

更新:.debug()ストリームに追加することで、遅延ストリームが実際に 2 秒後にソースにサブスクライブすることがわかりました。しかし、それでも 2 秒後に通知が送信されない理由は説明できません。

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

swift - オブザーバブル内で使い捨てを処分する適切な方法

HTTPService返す がありますObservable<NSData>。私の目標は、そのサービスを別のサービスに構成して、ServiceAそのデータを私のユース ケースに変換することです。Observable.createRxSwift 2.0.0-rc.0 で使用ServiceAするのは簡単です。私の質問は、のサブスクリプションから返された使い捨てを適切に処理する方法HTTPServiceです。

何もしないと、コンパイル時にhttp://git.io/rxs.udresult of call is unusedという警告が表示されます。私が何もしなければ、おそらく大丈夫だということを読んで理解しました:(以下で言及されているのはxslet xs: Observable<E> ....

xs が Completed または Error メッセージで予測可能な方法で終了する場合、サブスクリプション Disposable を処理しないことでリソースがリークすることはありませんが、要素の計算が予測可能な時点で終了するため、依然として好ましい方法です。

したがって、これが私が現在どのように対処しているか、また、これを適切に行っているかどうか、または何かを誤解していないかどうか疑問に思っている場所です。

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

system.reactive - オブザーバブルが定義された後に、オブザーバブルに更新を宣言的にプッシュする方法はありますか?

私は Rx を調査していて、この要素のコンポーネントが初期化される前に、UI 要素の入力出力を相互に宣言的に定義できるかどうかを確認したかったのです。

これは次のようになります。

ここでの問題は、PublishSubject を使用して更新を入力ストリームにプッシュしていることです。これは必須であり、推奨されていません。Rx は、すでに実行中のオブザーバブルに何らかの方法でシーケンスを追加する方法を提供しますか?

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

mvvm - RxSwift で ViewModel をテストする

ModelView-ViewModelは現在作業しているプロジェクトで使用しておりRxSwiftRxBlocking&を使用していRxTestsます。現在、私は ViewModel をテストしようとしていますが、これを回避するには多くの問題があります。

だから私は私の を持っているとExampleViewModelしましょうExampleViewController。Myは、 からの 2 つのストリームの組み合わせ ( ) でExampleViewModelあるストリームを期待しています。のようなものです。フォーカスされているかどうか、および文字列のコンテキストに応じて、myは内部的に公開されたプロパティにイベントを発行します。これは、の backgroundColor の状態です。.ObservablecombineLatestUITextFieldObservable<(Bool, String)>ExampleViewModelObservableUITextFieldObservable<UIColor>

ExampleViewModel.swift:

(正しいフォーマットの仕方がわかりません)

基本的には、クラスをテストし、フォーカスとテキスト入力を制御することExampleViewModelで正しいものを出力することをテストしたいと思います。UIColor

ありがとう

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

swift - RxSwift/RxCocoa からの次のサンプル コードは何をしますか?

詳しく理解しようとしている

WikipediaSearchViewController.swift 行 47-64 から。具体的な型シグネチャを調べるために引数を抽出しようとしましたが、次のように書き直しました

与える

タイプ '(String, cellType: UITableViewCell.Type)' の引数リストで 'rx_itemsWithCellIdentifier' を呼び出すことはできません

driveArg1 および

式のタイプは文脈がないとあいまいです

driveArg2 の場合。

driveとの署名rx_itemsWithCellIdentifier

しかし、現時点では、Swift の構文はまったく理解できません。署名とコードで何が起こるかを説明できる人はいますか?

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

swift - RxSwift 変数を正しく使用する

RxSwift と MVVM を使用するようにプロジェクトを変換しようとしています。私は、アプリを起動するたびに Parse からのデータのリストを同期するサービスを持っています。基本的には、正しいアプローチを取っていることを確認したいと考えています。

私が行ったことは、変数のサブジェクトを作成し、モデルがこれをリッスンできるようにすることです。解析サービス:

きのこライブラリモデル:

同期状態を表現するために同じことを行います。

解析サービス:

次に、変数を更新します

同期ビューモデル:

とにかく、これが良い方法なのか、それとも RxSwift を誤用しているのか (そして、これをどのように行うべきかを教えてくれる) かどうかを誰かに教えていただければ幸いです。

乾杯!

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

swift - RxSwift の最小限の Observable.create の例

現在、RxSwift を機能させようとしています。そして、カスタム Observable を作成したいと思います。しかし、私は何か間違ったことをしていると思います。

私が行っていることをこの最小限のサンプルにまとめました。

これは正しいです?run メソッドでは、subscribeNext メソッドが XCode によってそのようにオートコンプリートされます。

例

しかし、実行すると、次のコンパイルエラーが発生します。

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

ios - RxSwift で「リアクティブ」API を作成する

私は RxSwift に足を踏み入れており、通常の API 呼び出しの 1 つに「ストリーミング API」を作成したいと考えています。

私の考えは、通常の呼び出し(すでに何の問題もなくオブザーバブルを使用しています)を取り、タイマーにそのような呼び出しを起動させ、同じオブザーバブルで結果を送信することです。これにより、View Controllerは自動的に更新できるため、これを行う代わりに(疑似コードが続きます) :

私はこれが起こることを望みます(疑似コードが続きます):

最後に試みたのは NSTimer をミックスに追加することでしたが、シンクへの参照を取得し、それをタイマーによって呼び出されるメソッドに渡して実際にイベントをパイプに送信する方法がわかりません。タイマーのハンドラは、スタンドアロン メソッド上にある必要があります。BlocksKit のブロック タイマー拡張機能を投入しようとしましたが、タイマーは指定された間隔で起動されるのではなく、1 秒ごとに起動され、目的を達成できませんでした。

オペレーターについても読みましたIntervalが、それが正しい方法かどうかはわかりません。

これを正しく行う方法についての指針はありますか?

最終的な目標は、前の呼び出しが終了した後 (成功または失敗) にのみタイマーを再始動させることです。