我在Core Data图中有一对多的关系,我试图理解使用CoreDataGeneratedAccessors方法和简单赋值来改变关系的区别。例如,Core Data Programming Guide有一个部门和员工示例。在那个例子中,他们使用CoreDataGeneratedAccessors聘用和解雇员工:核心数据CoreDataGeneratedAccessors与简单赋值
[aDepartment addEmployeesObject:newEmployee];
[aDepartment removeEmployeesObject:firedEmployee];
他们没有定义的反比关系,但说“部门”是反比关系,以“雇员”。下面的话是否应该完成同样的事情?
newEmployee.department = aDepartment
firedEmployee.department = nil;
根据核心数据编程指南的Manipulating Relationships and Object Graph Integrity章节,后面的例子应该自动修复的所有关系,以保持一致性图。如果是这种情况,当存在反向关系时,是否有任何理由使用CoreDataGeneratedAccessors?使用CoreDataGeneratedAccessors是否在反向关系上保持图形一致性?
Martin-感谢您的回复。我有一种情况,我可以使用[aDepartment addEmployeesObject:newEmployee]一次,但是应用程序内的后续调用(不管它是否在另一个新的员工上)不会更新。但是,用newEmployee.department = aDepartment替换它始终有效。这两个电话的行为似乎不一致,所以我感到困惑,他们应该做同样的事情。想法? – chris 2010-09-13 17:10:42
@chris - 这听起来好像你在Department实体和Employee实体之间没有反向关系。 – TechZen 2010-09-14 12:28:06
在某些特殊情况下,当某些核心数据更改处理和观察代码修改关系被触发时,我只会遇到这种行为。(这是我的代码的错误) – 2010-09-15 05:32:11