如何使用核心数据创建递归 one-to-many 关系?

How do I create a recursive one-to-many relationship using core data?

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

我有 2 个实体,我们称它们为笼子和动物。

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

cage ---------- animal 1
         |
         |_____ animal 2
         |
         |_____ animal 3 ____ animal 4
                          |
                          |__ animal 5
                                  |
                                  |_____ animal 6

查看此结构,您会看到 Animal 1Animal 2Animal 3 具有 Cage 作为 parent 或 "children" objects of Cage 如果你愿意的话。另一方面,Animal 3 有 2 个 children object(4 和 5),Animal 5 有一个 children object.

我需要 CageAnimal 是不同的实体。

因此,您看到 Animal object 可以有其他动物 children。一个动物可以有一个 parent 但多个 children。一个 Cage object 只能有 children.

我试图添加一个 children 关系,目标等于 Animal,逆等于 children (toMany) 但这就是让我的大脑融化的原因,因为如果我这样做,这有时会是 parent,有时会是 children,更不用说名字 children 会让编码变得难以理解...

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

首先创建您的实体和属性。然后建立你的关系。 "animals" 和 "children" 的关系应设置为 "to many"。将 "cage" 和 "parent" 设置为 "to one" 关系。最后,为每个关系设置目标和逆。

关系 "animals" 和 "cage" 应该是相反的。 关系 "parent" 和 "children" 应设置为相反。

完成后应该如下所示:

动物住在笼子里,两只动物可以发生关系。