核心数据:对象图问题

Posted

技术标签:

【中文标题】核心数据:对象图问题【英文标题】:Core Data : object graph problem 【发布时间】:2011-06-12 20:34:05 【问题描述】:

我对 Core Data 有疑问。这种情况会出现问题:

-I have two entities, for instance "Department" and "Employee". 
-A to-many relationship from "Department" to "Employee"

当我生成模型时,会生成两个类:“部门”和“员工”。 “部门”类有一个员工的“NSSet”,感谢对多关系。

在代码中,我创建了两个“部门”实例 (d1, d2) 和一个“员工”实例 (e1)。 我希望 e1 实例可以在 d1 和 d2 中(通过关系)。所以我做了类似的事情:

[d1 addEmployeeObject:e1 ];
[d2 addEmployeeObject:e1 ];

问题是,当我重新启动应用程序时,d1 中不再存在 e1(仅在 d2 中)。似乎 core-data 自动从 d1 中删除了 e1。但我不想要那个!!!

根据核心数据documentation,这似乎是适当的行为(阅读上面链接中的操作关系和对象图完整性一章)。

如何防止这种行为?有什么想法吗?

感谢阅读, 真的希望我已经清楚了。

【问题讨论】:

【参考方案1】:

建立一个称为 Departments 的反向关系,即从 Employee 到 Department 的一对多关系。

将“Departments”的倒数标记为“Employees”,其中“Employees”是从部门到员工的一对多。

当您生成类时,您应该看到 Department 有一个 NSSet *employees,而 Employee 有一个 NSSet *departments。

【讨论】:

是的,这就是我这样做和工作的原因。确实,这是解决方案;)谢谢;)

以上是关于核心数据:对象图问题的主要内容,如果未能解决你的问题,请参考以下文章

iPhone RestKit 是不是可以将核心数据对象图转换为 JSON?

如何从核心动画对象中引用图层?

类图与对象图

UML核心视图介绍

核心数据:瞬态值脏对象

图计算的学习与思考