這很容易通過更加細化地更新模型對象來解決;但是,內置集合在修改內容時不會生成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
接收新的或舊值,分別。