Reactive NSMutableDictionary?

ash*_*lal 2 multicast objective-c reactive-programming nsmutabledictionary reactive-cocoa

如何使用ReactiveCocoa订阅要从NSMutableDictionary添加和删除的对象?此外,我想在更改时广播通知.我的猜测是可以使用RACMulticastConnection完成广播,但如何将其与字典更改联系起来?我正在尝试在我的项目中第一次使用ReactiveCocoa并坚持我想要做的第一件事:(

Jus*_*ers 7

RACObserve键值观察的包装,并继承了相同的功能和缺陷.

不幸的是,NSMutableDictionary不能自动观察.有两种方法可以解决这个问题:

  1. 对它进行子类化并添加KVO支持.
  2. 创建一个真实的模型对象,使用属性而不是字典键.然后你就可以在这些属性上获得KVO,只要你使用setter而不是直接ivar修改.

我不确定你的意思是什么"广播时发送通知",或者为什么它有价值.根据我的口味,通知太过全球化,我推广使用更有限的观察(如KVO).

但是,假设您肯定想要这样做,那么发布通知以响应新的信号值非常简单:

@weakify(self);
[RACObserve(self, dictionary) subscribeNext:^(NSDictionary *dictionaryValue) {
    @strongify(self);
    [NSNotificationCenter.defaultCenter postNotificationName:SomeNotificationName object:self];
}];
Run Code Online (Sandbox Code Playgroud)

如果您想要KVO的更改字典(其中包含有关添加/删除值的信息),您需要替换RACObserve+ rac_valuesAndChangesForKeyPath:options:observer : .