ReactiveCocoa を使用して NSMutableDictionary に追加および削除されるオブジェクトをサブスクライブするにはどうすればよいですか? また、変更時に通知をブロードキャストしたいと思います。私の推測では、ブロードキャストは RACMulticastConnection を使用して実行できますが、これを辞書の変更とどのように結びつけることができますか? 私は自分のプロジェクトで初めてReactiveCocoaを使用しようとしていますが、最初にやりたかったことに固執しています:(
1359 次
2 に答える
7
RACObserve
はキー値監視のラッパーであり、同じ機能と欠陥を継承しています。
残念ながら、NSMutableDictionary
自動的に観測することはできません。これを回避するには、次の 2 つの方法があります。
- それをサブクラス化し、KVO サポートを追加します。
- ディクショナリ キーの代わりにプロパティを使用して、実際のモデル オブジェクトを作成します。次に、ivar を直接変更する代わりにセッターを使用する限り、これらのプロパティで KVO を取得します。
「[ブロードキャスト] 通知が変更されたときに通知を送信する」とはどういう意味なのか、またはなぜそれが価値があるのか 、正確にはわかりません. 通知は私の好みではグローバルすぎるので、代わりに (KVO のように) より制限された監視を使用することをお勧めします。
ただし、これを確実に実行したい場合は、新しいシグナル値に応答して通知を送信するのは簡単です。
@weakify(self);
[RACObserve(self, dictionary) subscribeNext:^(NSDictionary *dictionaryValue) {
@strongify(self);
[NSNotificationCenter.defaultCenter postNotificationName:SomeNotificationName object:self];
}];
KVO の変更辞書 (追加/削除された値に関する情報を含む) が必要な場合はRACObserve
、+rac_valuesAndChangesForKeyPath:options:observer:に置き換える必要があります。
于 2013-10-07T16:05:17.870 に答える