这很容易通过更加细化地更新模型对象来解决;但是,内置集合在修改内容时不会生成KVO通知,并且需要一些手动支持。
如果要生成有关对阵列进行更改的通知,请在每次修改时使用willChange:valuesAtIndexes:forKey:和didChange:valuesAtIndexes:forKey:。使用这些方法时,更改字典将包含NSKeyValueChangeIndexesKey
的条目,该条目反映了插入,删除或替换的索引。
如果你想生成有关更改字典通知,您可以拨打willChangeValueForKey:
和didChangeValueForKey:
在字典本身,就像这样:
- (void)addContent:(id)content {
NSString *key = [content name];
[self.contentsByName willChangeValueForKey:key];
[self.contentsByName setValue:content forKey:key];
[self.contentsByName didChangeValueForKey:key];
}
任何观察员也可以使用NSKeyValueObservingOptionNew
或NSKeyValueObservingOptionOld
接收新的或旧值,分别。