問題タブ [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.
ios - delaySubscription が rx_tap で機能しない
これは、問題を再現する私のコードの短いバージョンです:
ボタンをタップしてから2秒後に「遅延」信号を発したいのですが、そのような運はありません。実際に何が起こるか: ボタンを初めてタップすると、「ソース」が起動しますが、他には何も起こりません。その後、もう一度タップすると、「ソース」と「遅延」が同時に発火します。スレッドの問題だと思ったので、observeOn(MainScheduler.sharedInstance)
どこにでも追加しようとしましたが、役に立ちませんでした。何か案は?
更新:.debug()
ストリームに追加することで、遅延ストリームが実際に 2 秒後にソースにサブスクライブすることがわかりました。しかし、それでも 2 秒後に通知が送信されない理由は説明できません。
swift - オブザーバブル内で使い捨てを処分する適切な方法
をHTTPService
返す がありますObservable<NSData>
。私の目標は、そのサービスを別のサービスに構成して、ServiceA
そのデータを私のユース ケースに変換することです。Observable.create
RxSwift 2.0.0-rc.0 で使用ServiceA
するのは簡単です。私の質問は、のサブスクリプションから返された使い捨てを適切に処理する方法HTTPService
です。
何もしないと、コンパイル時にhttp://git.io/rxs.udresult of call is unused
という警告が表示されます。私が何もしなければ、おそらく大丈夫だということを読んで理解しました:(以下で言及されているのはxs
let xs: Observable<E> ....
xs が Completed または Error メッセージで予測可能な方法で終了する場合、サブスクリプション Disposable を処理しないことでリソースがリークすることはありませんが、要素の計算が予測可能な時点で終了するため、依然として好ましい方法です。
したがって、これが私が現在どのように対処しているか、また、これを適切に行っているかどうか、または何かを誤解していないかどうか疑問に思っている場所です。
system.reactive - オブザーバブルが定義された後に、オブザーバブルに更新を宣言的にプッシュする方法はありますか?
私は Rx を調査していて、この要素のコンポーネントが初期化される前に、UI 要素の入力と出力を相互に宣言的に定義できるかどうかを確認したかったのです。
これは次のようになります。
ここでの問題は、PublishSubject を使用して更新を入力ストリームにプッシュしていることです。これは必須であり、推奨されていません。Rx は、すでに実行中のオブザーバブルに何らかの方法でシーケンスを追加する方法を提供しますか?
mvvm - RxSwift で ViewModel をテストする
私ModelView-ViewModel
は現在作業しているプロジェクトで使用しておりRxSwift
、RxBlocking
&を使用していRxTests
ます。現在、私は ViewModel をテストしようとしていますが、これを回避するには多くの問題があります。
だから私は私の を持っているとExampleViewModel
しましょうExampleViewController
。Myは、 からの 2 つのストリームの組み合わせ ( ) でExampleViewModel
あるストリームを期待しています。のようなものです。フォーカスされているかどうか、および文字列のコンテキストに応じて、myは内部的に公開されたプロパティにイベントを発行します。これは、の backgroundColor の状態です。.Observable
combineLatest
UITextField
Observable<(Bool, String)>
ExampleViewModel
Observable
UITextField
Observable<UIColor>
ExampleViewModel.swift
:
(正しいフォーマットの仕方がわかりません)
基本的には、クラスをテストし、フォーカスとテキスト入力を制御することExampleViewModel
で正しいものを出力することをテストしたいと思います。UIColor
ありがとう
swift - RxSwift/RxCocoa からの次のサンプル コードは何をしますか?
詳しく理解しようとしている
WikipediaSearchViewController.swift 行 47-64 から。具体的な型シグネチャを調べるために引数を抽出しようとしましたが、次のように書き直しました
与える
タイプ '(String, cellType: UITableViewCell.Type)' の引数リストで 'rx_itemsWithCellIdentifier' を呼び出すことはできません
driveArg1 および
式のタイプは文脈がないとあいまいです
driveArg2 の場合。
drive
との署名rx_itemsWithCellIdentifier
は
しかし、現時点では、Swift の構文はまったく理解できません。署名とコードで何が起こるかを説明できる人はいますか?
swift - RxSwift 変数を正しく使用する
RxSwift と MVVM を使用するようにプロジェクトを変換しようとしています。私は、アプリを起動するたびに Parse からのデータのリストを同期するサービスを持っています。基本的には、正しいアプローチを取っていることを確認したいと考えています。
私が行ったことは、変数のサブジェクトを作成し、モデルがこれをリッスンできるようにすることです。解析サービス:
きのこライブラリモデル:
同期状態を表現するために同じことを行います。
解析サービス:
次に、変数を更新します
同期ビューモデル:
とにかく、これが良い方法なのか、それとも RxSwift を誤用しているのか (そして、これをどのように行うべきかを教えてくれる) かどうかを誰かに教えていただければ幸いです。
乾杯!
ios - RxSwift で「リアクティブ」API を作成する
私は RxSwift に足を踏み入れており、通常の API 呼び出しの 1 つに「ストリーミング API」を作成したいと考えています。
私の考えは、通常の呼び出し(すでに何の問題もなくオブザーバブルを使用しています)を取り、タイマーにそのような呼び出しを起動させ、同じオブザーバブルで結果を送信することです。これにより、View Controllerは自動的に更新できるため、これを行う代わりに(疑似コードが続きます) :
私はこれが起こることを望みます(疑似コードが続きます):
最後に試みたのは NSTimer をミックスに追加することでしたが、シンクへの参照を取得し、それをタイマーによって呼び出されるメソッドに渡して実際にイベントをパイプに送信する方法がわかりません。タイマーのハンドラは、スタンドアロン メソッド上にある必要があります。BlocksKit のブロック タイマー拡張機能を投入しようとしましたが、タイマーは指定された間隔で起動されるのではなく、1 秒ごとに起動され、目的を達成できませんでした。
オペレーターについても読みましたInterval
が、それが正しい方法かどうかはわかりません。
これを正しく行う方法についての指針はありますか?
最終的な目標は、前の呼び出しが終了した後 (成功または失敗) にのみタイマーを再始動させることです。