核心数据反映了许多关系

时间:2012-12-14 19:33:03

标签: objective-c ios core-data

需要设置一个与自身有多对多关系的实体人(反身)。

所以每个人都可以有n个人,基本上就是这个:

enter image description here

人是否有两个关系,人和子人?逆规则如何运作?

3 个答案:

答案 0 :(得分:1)

实体当然可以与自身相关,就像双向链表中的节点具有 next 以前与其他节点的关系一样。请记住,实体就像一个类 - 它是一种类型的对象而不是一个特定的对象。因此,例如,您的Person实体可能与Person有 friends 关系 - 给定的人可能有很多朋友,所有朋友也都是Person的实例。

答案 1 :(得分:1)

如果我正确理解您的要求,您只需要定义一个实体 Person 和两个关系:

  • sub_persons关于的关系,
  • super_person关于之间的关系,

并将它们定义为彼此的反向关系。

答案 2 :(得分:1)

通过这种方式,Core Data中的对象绝对可以与自身相关。在Table,数据模型的Graph编辑器中,按住控制键并从Person中绘制一条线并返回到自身。这会给你一条线,每一端都有一个箭头,都指向Person。然后重命名关系(parentPerson,subPersons)并在属性检查器中使subPersons成为多对多关系。最终结果应如下所示:

enter image description here

这种数据管理方式遵循称为Composite Pattern的设计模式。