大家好多年读书的StackOverflow,现在我决定加入。我竭力让这个解决:志愿的addObserver到CoreData对象的一个一对多的关系
我有两个一对多的关系,“人”和“卡车”一个“仓库”的实体。我想观察何时,给定一个“仓库”对象时,在其中一个关系中存在变化(插入,移除)(并理解其中哪一个)。
目前,我这样做:在两个相关的收藏品之一
[mydepot addObserver:self forKeyPath:@"Trucks" options:NSKeyValueObservingOptionNew context:nil];
和
[mydepot addObserver:self forKeyPath:@"Persons" options:NSKeyValueObservingOptionNew context:nil];
,但每次有新的变化,observeValueForKeyPath
被调用两次(一次为每的keyPath)。
难道我做错了?看着“改变”字样(用OptionOld观察)显示没有意外的变化(当我改变人物时,卡车没有改变),但通知仍然提出。
谢谢,彼得
编辑:看来,这两个时代的“变革”字典包含在“新”领域的整个关系。 (显然,一个人的时间和一次卡车)
EDIT2:因为它发生甚至bserving简单的属性,难道是managedctx保存操作有关?就好像当你保存,整个对象被认为是改变..
+1同意。考虑修改现有的值集合,而不是用不同的集合替换整个集合。 – Caleb 2013-03-27 16:00:25
谢谢,是的,但是Depot是一个CoreData NSManagedObject子类,因此应该已经实现了KVO兼容访问器。我正在做你说的,事实上,我只是在关系中增加一个新的卡车实体,从不替换/设置整个集合(关系)。这就是为什么我不明白。仿佛我看到了两个keypaths例如“卡车”和“sqmeters”(这不是一个关系),如果“sqmeters”被修改,两个通知被触发(也一为“卡车” kpath) – Peterdeka 2013-03-27 16:19:39
关键路径可以依靠彼此......也许这就是发生了什么?否则,你将不得不在其他地方 – nielsbot 2013-03-27 16:24:26