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

标签 ios iphone macos cocoa core-data

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

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

  • Cage 有一个属性 name
  • Animal 有一个 nameimage 属性,并且必须跟踪它的 child 。

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

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

查看此结构,您会看到 Animal 1Animal 2Animal 3 的父级为 Cage或者是凯奇的“ child ”对象,如果你愿意的话。另一方面,Animal 3 有 2 个子对象(4 和 5),Animal 5 有一个子对象。

我需要 CageAnimal 是不同的实体。

因此,您看到 Animal 对象可以有其他 Animals 作为子对象。一只动物可以有一个 parent ,但可以有多个 child 。 Cage 对象只能有 child 。

我试图添加一个 children 关系,目标等于 Animal 并且反向等于 children (toMany) 但这就是让我的大脑融化的原因,因为如果我这样做,这将一次是 parent ,一次是 child ,更不用说 child 这个名字会使编码难以绕过头......

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

最佳答案

首先创建您的实体和属性。然后建立你的关系。 “动物”和“ child ”的关系应该设置为“很多”。将“cage”和“parent”设置为“to one”关系。最后,为每个关系设置目标和逆。

“动物”和“笼子”的关系应该是相反的。 关系“parent”和“children”应该设置为相反。

完成后应该看起来像这样:

enter image description here

关于ios - 如何使用核心数据创建递归的一对多关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28516684/

相关文章:

cocoa - NSNumberFormatter 不允许输入十进制数字

ios - 从类返回 NSURLConnection 数据

ios - 使用模型无法在 cellForRowAtIndexPath 中获取数据

iphone - UINavigation Controller 无法在横向模式下打开

iphone - iphone sdk如何在电话通讯过程中播放DTMF音频文件

iOS越狱: simple alert is not getting displayed in `applicationDidFinishLaunching`

ios - 是否可以使用脚本在Xcode中引发错误?

ios - 为什么我不能在 Swift 中设置我的 UINavigationController 的标题?

cocoa - Sparkle 框架问题(未显示正确的版本)

actionscript-3 - 设置默认浏览器以在 Mac 上的 Flash Builder 中打开 flex 应用程序?