問題タブ [reactive-cocoa-4]
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.
objective-c - ReactiveCocoa: オブザーバーにマップを適用するシグナルの作成
私が理解していることから、RACSubject
ReactiveCocoa 4 に相当するのはObserver
クラスです。信号とオブザーバーをリンクして、信号がイベントを送信し、オブザーバーに送信されたイベントにマップ操作を適用したいと考えています。Obj-C では、次のようになります。
誰かが に値をプッシュするとsomeAction
、someSignal
は派生値を含むイベントを発生させます。Swiftで同じ効果を得るにはどうすればよいですか?
私がこれまでにできたことは、次のようなものです。
これは悪い解決策のように見えます。
internalSignal
プライベートにする必要がありますが、Signal のパイプと一致させるためにパブリックとして宣言する必要がありますsomeSignal
したがって、同じ信号を何度も再利用できる場合でも、必要になるたびに計算されます。let
また、定数として宣言することはできません。
ios - RAC MutableProperty プロデューサーがサブスクライバーにイベントを送信しない
サーバーから都市オブジェクトのリストを取得し、JSON として返す RAC4 を使用したアプリを開発しています。各都市とその適切なプロパティを City オブジェクトとして格納することで、応答を処理します。次に、各 City を CityViewModel 型にマップし、[CityViewModel] 型の配列を MutableProperty として格納します。ここから、各都市が tableViewCell にファイルされ、セル内に名前とダウンロードの進行状況バーを使用して表示されます。タップすると、セルは都市の nid (都市 ID) をパラメーターとして使用して別のサーバー要求をトリガーし、画像などを含む大きな .zip ファイルをダウンロードします。
ここでの目標は、進行状況のライブ更新でプログレス バーをアニメーション化することです。タップすると、セルはすべてを開始するdownloadCityData(nid: Int)
関数を呼び出します。
問題は、都市のプロパティが更新されている間、都市がオブジェクトMutableProperty<[CityViewModel]>
の外部で変更をリスナーに通知していないことです。DataViewModel
(この場合はDetailViewController
)
ビューコントローラー:
ビューモデル:
データ管理者:
シティビューモデル:
街:
swift - Reactive Cocoa を使用したラジオ ボタン ロジックとデッドロックの回避
私の目標は、ReactiveCocoa を使用してラジオ ボタンを実装することです。これは、子ビューモデルの配列があり、一度に選択状態にできるのは 1 つだけであることを意味します。また、必要なときにすばやく切り替える機能も必要multi-select
ですが、私の問題はsingle-select
. 以前に選択したアイテムをクリアしようとすると、デッドロックが発生します。以下のコードでは、次のエラーが発生します。
私がこれについてすべて間違っているのかどうかはわかりません。助けてください。
コードサンプル:
更新 1
そこで、ビュー モデル オブジェクト グラフがどのように変化するかについていくつかのルールを考え出すことで、問題を解決しました。
1) オブザーバブルの 2 つのセットがあり、1 つのセットは受信イベントを表し、もう 1 つのセットはビューモデルの状態を表す状態プロパティです。読み取りまたはバインドできる状態。
2) 状態プロパティの変更は、「イベントを監視している」場合にのみ実行でき、プロパティを監視している間は実行できません。これは、1 つの状態プロパティがそれ自体または別の状態プロパティを決して変更してはならず、その変化を観察してはならないことを意味します。
3) 着信イベントは他のイベントを開始できません。つまり、スタック/ランループ ループごとに 1 つのイベントです。
コードは次のようになります。
このパターンは、オブジェクト グラフの関係がより複雑になるにつれて、物事を単純に保つように感じます...おそらく。今はおそらくこれで行きますが、ReactiveCocoa の代替パターンや代替ライブラリを提案してください。
ios - ReactiveCocoa (4.2.1) と Swift による非同期イメージの読み込み
私はReactiveCocoaを Swift で初めて使用する初心者です。映画のリストを表示するアプリを作成しており、MVVM パターンを使用しています。私のViewModelは次のようになります:
そして、次のように UITableView でセルを構成したいと思います。
これは Reactive Cocoa の正しいアプローチですか? タイトルと説明を変更可能として宣言する必要がありますか、それとも単に画像として宣言する必要がありますか (変更するのは 1 つだけです)。バインディングを使用できると思いますが、続行する方法がわかりません。
swift - ReactiveCocoa-collectionViewのセルでシグナルを複数サブスクライブしないようにするにはどうすればよいですか
データをリロードすると、この方法が再び実装され、Signal が何度もサブスクライブされます。
ios - ReactiveCocoa Swift クラッシュ
アプリケーションの Hockeyapp で異常なクラッシュが発生しました
私はそれを再現することができませんでした。また、ゲッターでクラッシュが発生しますが、それは奇妙ではありませんか? または、何かが恋しいと思います...正確に見ていたかどうかはわかりません
さらに情報が必要な場合は、教えてください。手がかりがあれば、躊躇しないでください。
助けてくれてありがとう。
編集1:
これは、balancesInfo を使用したシグナル プロデューサーです。
これらのコード行は、balancesInteractor init にあります。
編集2:
これは、balanceInfo を作成するためのコードの行です。
ios - ReactiveCocoa 4 - 信号イベントの遅延とフィルタリング
ReactiveCocoa 4 を使用して検索テキストフィールドを実装しており、テキストが X 時間入力されなかった場合にのみ検索 API をヒットしたいと考えています。以前にスケジュールされたものをキャンセルし、textDidChange デリゲート メソッドで「executeSearch」セレクターを起動することで、以前にこれを行いました。これにより、入力するたびに、以前にスケジュールされた「executeSearch」セレクターがキャンセルされ、新しいセレクターが X 秒で起動するようにスケジュールされます。
これと同じ動作をしたいのですが、入力テキストにバインドされたシグナルプロデューサーからです。私の現在の実装は近いですが、同じではありません。この動作は、前のイベントをキャンセルするのではなく、テキスト入力イベントを 0.5 秒ごとに発生するように調整するだけです。
ReactiveCocoa 4 のドキュメントを調べて、どのシグナル関数を使用すべきかを判断するのに苦労しています! ありがとうございました!
ios - プロジェクトで新しいバージョンの RAC(ReactiveCocoa) を変更するには?
iOS 10 がリリースされる前にビルドした iOS プロジェクトを開くと、Swift のバージョンが原因で ReactiveCocoa に関するエラーが表示されます。Github で提供されている方法を使用しようとしましたが、失敗したようです。現在の Swift に変換しようとすると、少なくとも 18 個のエラーが発生します。