如何使用 ReactiveCocoa 订阅从 NSMutableDictionary 添加和删除的对象?另外,我想在它发生变化时广播通知。我的猜测是可以使用 RACMulticastConnection 完成广播,但我如何将其与字典更改联系起来?我第一次尝试在我的项目中使用 ReactiveCocoa 并坚持我想做的第一件事:(
最佳答案
RACObserve
是 key-value observing 的包装器, 并继承了相同的特性和缺陷。
不幸的是,NSMutableDictionary
不是自动可观察的。有两种方法可以解决这个问题:
- Subclass it and add KVO support .
- 创建一个真实的模型对象,使用属性而不是字典键。然后,只要您使用 setter 而不是直接修改 ivar,您就会在这些属性上获得 KVO。
我不确定您所说的“[广播] 通知发生变化时”到底是什么意思,或者它为什么有值(value)。通知对我来说太全局化了,我提倡使用更有限的观察(比如 KVO)。
但是,假设您确实想要这样做,发布通知以响应新的信号值就足够简单了:
@weakify(self);
[RACObserve(self, dictionary) subscribeNext:^(NSDictionary *dictionaryValue) {
@strongify(self);
[NSNotificationCenter.defaultCenter postNotificationName:SomeNotificationName object:self];
}];
如果您想要 KVO 的更改字典(其中包括有关添加/删除值的信息),您需要将 RACObserve
替换为 +rac_valuesAndChangesForKeyPath:options:observer: .
关于objective-c - react 性 NSMutableDictionary?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19211314/