Phi*_*lip 6 core-data objective-c key-value-observing nsset
所以我对Core Data和KVO相当新,但我有一个NSManagedObject子类,它成功地观察了它自己的to-many关系.问题是,在观察到的变化时,我想只迭代添加或删除的一组对象.有没有办法直接访问这些项目?或者我必须做一些相对低效的事情:
NSSet* newSet = (NSSet*)[change objectForKey:NSKeyValueChangeNewKey];
NSSet* oldSet = (NSSet*)[change objectForKey:NSKeyValueChangeOldKey];
NSMutableSet* changedValues = [[NSMutableSet alloc] initWithSet:newSet];
[changedValues minusSet:oldSet];
Run Code Online (Sandbox Code Playgroud)
我觉得你应该能够避免这种情况,因为在这些消息中......
[self willChangeValueForKey:forSetMutation:usingObjects:];
[self didChangeValueForKey:forSetMutation:usingObjects:];
Run Code Online (Sandbox Code Playgroud)
你正在处理添加/删除的对象!也许知道这些物体会发生什么会有所帮助?
小智 5
您是否真的检查了KV观察提供的"旧"和"新"值的内容?当我观察到触发的可变集didChangeValueForKey:forSetMutation:usingObjects:的更改时,NSKeyValueChangeNewKey的更改字典值仅保存任何添加的对象,而NSKeyValueChangeOldKey的值仅保存任何已删除的对象,因此您不必手动找出已更改的内容.但是,触发的观察didChangeValue:forKey: 将为 NSKeyValueChangeOldKey提供整个旧集合,并为NSKeyValueChangeNewKey提供整个新集合,即使它们具有相同的内容.
| 归档时间: |
|
| 查看次数: |
3394 次 |
| 最近记录: |