【问题标题】:Core Data reflexive to-many relationshipsCore Data 自反对多关系
【发布时间】:2012-12-14 19:33:02
【问题描述】:

需要设置一个与自身有一对多关系(自反)的Entity Person。

所以每个人可以有n个子人,基本上是这样的:

Person 是否有两个关系,person 和 sub_person?逆规则如何运作?

【问题讨论】:

    标签: objective-c ios core-data


    【解决方案1】:

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

    • sub_persons 作为从 PersonPerson 的一对多关系,
    • super_person 作为从 PersonPerson 的一对一关系,

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

    【讨论】:

    • 正确。 sub_persons 的逆是 super_person,super_person 的逆是 sub_person。
    • 好的,谢谢 Martin R。你回答了我关于反身对多和多对多关系的问题,我很感激。我现在正试图找出我真正需要的。你能看看我的另一个问题吗:stackoverflow.com/questions/13918556/…
    • @Log139:Ramy Al Zuhouri 对这个问题的回答是正确的:你有一个多对多的关系。他只是混淆了 sub_friend 和 super_friend。
    【解决方案2】:

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

    【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多