Это легко решить, обновив объекты модели более детально;однако встроенные коллекции не генерируют уведомления 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
для получения новых или старых значений соответственно.