問題タブ [reactive-cocoa]
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 - UIButton を使用して UITextField がリセットされるたびに RACSignal が生成されない
私はUITextField
、UIImageView
そしてUIButton
私の中でUIView
。
サブスクリプション時に使用してRACSignal
、テキストボックスフィールドの値を出力します。NSLog
また、 はUIImageView
エラー インジケータとしても機能します。
コード スニペットを以下に示します。
リセットボタンを使用してフィールドをリセットするたびに、テキストフィールドはクリアされますが、対応する変更はnameIndicator
反映されません。ただし、バックスペース キーを使用してフィールドをリセットするnameIndicator
とGreenStar.png
、RedStar.png
nameIndicator
画像とともにテキストフィールドをリセットするために必要な修正を誰かに提案できますか?
ios - シグナルを組み合わせますが、最初のシグナルが変更されたときにサブスクライブするだけです
rac_signalForControlEvent
UIButtonの on を、次のようないくつかの結合された textFields シグナルと結合したい:
しかし、この方法では、ボタンが強調表示された状態をフィルタリングする必要があります。そうしないsubscribeNext:
と、テキストフィールドの一部が変更されるたびにブロックが起動されます( textFieldsCombinedSignal
)。
強調表示されたボタンの状態をフィルター処理することなく、これを達成したいと思っています (結局、状態を最小化するために ReactiveCocoa を使用していますが、これが私がやろうとしていることを行う適切な方法だとは思いません)。
ios - ReactiveCocoa で ViewModel を使用するアプリの構造化
私はReactiveCocoaから始めています。単純なことは理にかなっていますが、複雑なことはまだできません。;)
これが私がモデル化しようとしているものです: HTTP エンドポイントから要求されたデータを表示するビュー コントローラーがあります。HTTP エンドポイントは、ブラウザーに似た基本認証と Cookie を使用します。
だから、私はそのHTTPリクエストをしたいです。成功した場合は、データを表示します。401 で失敗した場合は、ユーザー名とパスワードを要求するモーダル ダイアログをポップアップするようにビューに指示し、HTTP 要求を再試行する必要があります。
私のViewModelでは、2つのシグナルがありますか? コンテンツを返すものと、ビューレイヤーに資格情報が必要であることを伝えるものはありますか? HTTP 要求が発生した場所に資格情報を戻すにはどうすればよいですか?
objective-c - アットマーク (@) 記号で始まる Objective-C マクロの意味
ReactiveCocoa フレームワークはweakify
とstrongify
マクロを使用します。どちらも「@」記号が前に付きます。
例を次に示します (このファイルから)。
マクロ名の接頭辞であるアットマークの意味は何ですか? (注: マクロを確認したところ、「@weakify」ではなく「weakify」と呼ばれているため、単なるマクロ名ではありません!)
マクロ自体は次のように定義されています。
https://github.com/jspahrsummers/libextobjc/blob/master/extobjc/EXTScope.h#L45
ios - RACSignal を計測するためのベスト プラクティス
インストルメンテーション ロジックをアプリに追加して、さまざまな API 呼び出しのレイテンシを追跡する任務を負っています。RACSignal (遅延実行 API 呼び出し) を返すメソッドにタイミング計測を追加する、クリーンで副作用のない方法を考え出すのに苦労しています。
考慮事項
- ReactiveCocoa @ 1.9.5 を使用 (現時点ではアップグレードできません)
- Parse-RACExtensions @ 0.0.2 の使用
- Parse-RACExtensions を変更するのではなく、ViewModel レイヤーでタイミングを設定することをお勧めします。これは、クエリ パラメーターなど、ログに記録したい追加情報が VM にあり、すべての API 呼び出しをインストルメント化する必要がないためです。
completed
イベントの受信時にのみタイミングを記録する- 無痛計測の精神で、発信者の負担は可能な限り小さくする必要があります。
試みられた解決策
私が思いついた唯一のことは、タイマー ロジックを処理する具体的な RACSubscriber サブクラスを作成することです。厄介なサブクラスに加えて、これは明示的な を必要とするため、明らかに理想的ではありません。これには、ソース信号のsubscribe:
オンが必要です。replay
さらに、シグナルへの一時的なハンドルを取得するために少なくともリファクタリングする必要があるため、発信者に負担がかかります。
使用法は次のようになります。
明らかに、私はこの実装に満足していません。
最終的な考え
理想的には、このような連鎖可能なメソッドが欲しいのですが、それを達成する方法がわかりませんでした/カテゴリメソッド内で厄介な副作用なしにコールドシグナルを処理できるかどうか (replay
レシーバーの呼び出しなど) .
考え?
ios - ReactiveCocoa - 副作用をシグナルに変える
私のアプリケーションでは、 を介して非同期ネットワーク アクティビティをトリガーする信号がありますflattenMap
。ネットワーク アクティビティの進行中にローディング インジケータを表示したいと考えています。
私の現在のソリューションはうまくいきます:
これは機能しますが、上記のコードを変更してhidden
、ロード インジケーターのプロパティをシグナル経由で設定できるようにしたいと考えています。
これは可能ですか?
私のアプリの他の場所には、要素の可視性がいくつかの異なる「イベント」に依存する、より複雑な要件があります。シグナルを介してこれらを構成できる方がはるかに優れています。