Pet*_*eka 9 core-data objective-c key-value-observing ios
大家好几年读StackOverflow,现在我决定加入.我正在努力解决这个问题:
我有一个"仓库"实体,它有两对多的关系"人"和"卡车".我想观察一下,给定一个"Depot"对象,其中一个关系中有变化(插入,删除)(并理解其中一个).
目前我这样做:
[mydepot addObserver:self forKeyPath:@"Trucks" options:NSKeyValueObservingOptionNew context:nil];
和
[mydepot addObserver:self forKeyPath:@"Persons" options:NSKeyValueObservingOptionNew context:nil];
但是每当两个相关集合中的某个集合发生变化时,observeValueForKeyPath就会被调用两次(每个密钥路径一次).
我做错了吗?查看"更改"字典,(与OptionOld一起观察)显示没有意外的变化(当我改变人员时,卡车没有改变),但仍然提出通知.
谢谢,彼得罗
编辑:似乎两次"更改"字典都包含"新"字段中的整个关系.(显然有一次人和一次卡车)
edit2:因为它甚至保留了简单的属性,它是否与managedctx保存操作有关?好像在保存时,整个对象被认为已经改变了..
在Key Value Observing Programming Guide中,它说明了这一点
如果您正在使用Core Data,则可以将父项作为其托管对象上下文的观察者注册到应用程序的通知中心.家长应以类似于键值观察的方式回应孩子们发布的相关变更通知.
这实际上可能意味着建议的做法不是使用addObserver:forKeyPath:options:context:,而是注册NSManagedObjectContextDidSaveNotification代替.
| 归档时间: |
|
| 查看次数: |
7220 次 |
| 最近记录: |