如何使用核心数据创建递归的一对多关系?

Spa*_*Dog 3 iphone macos cocoa core-data ios

我以前用过核心数据,但我必须构建的这个数据库有一个特殊性,需要一个特殊的关系,这让我的大脑融化。

我有 2 个实体,我们称它们为 Cage 和 Animal。

  • 笼子只有一个属性 name
  • Animal 有nameandimage属性,必须跟踪它的孩子。

一个可能的结构可能是这样的

cage ---------- animal 1
         |
         |_____ animal 2
         |
         |_____ animal 3 ____ animal 4
                          |
                          |__ animal 5
                                  |
                                  |_____ animal 6
Run Code Online (Sandbox Code Playgroud)

看着这样的结构,你看到Animal 1Animal 2Animal 3Cage家长或有“孩子”如果你愿意凯奇的对象。另一方面Animal 3有 2 个子对象(4 和 5)和Animal 5有一个子对象。

我需要Cage并且Animal成为不同的实体。

所以,你会看到Animal对象可以有其他动物作为孩子。一只动物可以有一个父母,但可以有多个孩子。Cage 对象只能有子对象。

我试图添加一个children与目的地等于动物和逆等于children(toMany) 的关系,但这就是融化我的大脑的原因,因为如果我这样做,这将是一次父母和其他人的孩子,更不用说孩子这个名字会让编码变得难以理解......

我必须如何建立实体之间的关系才能完成这项工作?

pic*_*ano 5

首先创建您的实体和属性。然后建立你的关系。“animals”和“children”的关系被设置为“to many”。将“笼子”和“父母”设置为“一对一”关系。最后,为每个关系设置目标和逆。

“动物”和“笼子”的关系应该是相反的。关系“父母”和“孩子”应该设置为反向。

完成后应该如下所示:

在此处输入图片说明