【发布时间】:2013-03-27 12:14:04
【问题描述】:
大家好,多年阅读 StackOverflow,现在我决定加入。我正在努力解决这个问题:
我有一个“仓库”实体,它有两个对多的关系“人员”和“卡车”。我想观察在给定“仓库”对象的情况下,其中一种关系发生变化(插入、删除)(并了解是哪一种)。
目前我正在这样做:
[mydepot addObserver:self forKeyPath:@"Trucks" options:NSKeyValueObservingOptionNew context:nil];
和
[mydepot addObserver:self forKeyPath:@"Persons" options:NSKeyValueObservingOptionNew context:nil];
但每当两个相关集合之一发生变化时,observeValueForKeyPath 就会被调用两次(每个键路径一次)。
我做错了吗?查看“更改”字典,(也观察 OptionOld)显示没有意外更改(当我更换人员时,卡车没有更改),但仍然会发出通知。
谢谢,彼得罗
编辑:似乎两次“更改”字典都包含“新”字段中的整个关系。 (显然一次是人,一次是卡车)
edit2:即使是简单的属性,它也会与 managedctx 保存操作有关吗?好像保存时,整个对象都被认为已更改..
【问题讨论】:
标签: ios objective-c core-data key-value-observing