核心数据 - 从一对多关系中检索属性

Posted

技术标签:

【中文标题】核心数据 - 从一对多关系中检索属性【英文标题】:Core Data - retrieving attribute from a one-to-many relationship 【发布时间】:2011-01-27 21:08:00 【问题描述】:

假设我们有以下模型:

Entity1:人物关系:夹克

Entity2:夹克属性:尺寸关系:所有者

所以我们有:所有者>夹克(每个人可以有很多夹克,但一件夹克只能有一个所有者)

让我们设置一个有 2 列的 NSTableView。我绑定第一个显示所有人。然后我希望第二列在第一列中显示所选所有者拥有的夹克尺寸。获取第一列是微不足道的,但是如何绑定第二列?我是否需要另一个 NSArrayController 来表示 Jackets 实体,或者我可以直接使用类似于(这不起作用)将列绑定到 Persons NSArrayController 并在值绑定控制器键下执行它:选择和模型键路径:arrangedObjects.size。当我尝试这个时,我得到了错误:

[ addObserver: forKeyPath:@"arrangedObjects.Jacket.size" options:0x0 context:0x0] 被发送到“arrangedObjects”属性不符合 KVC 的对象。

谢谢, 汉斯

【问题讨论】:

【参考方案1】:

你可以通过调用 aPerson.jackets 来遍历一个人的夹克:

NSMutableString *allSizes = [NSMutableString string];
for (Jacket *jacket in aPerson.jackets)
  allSizes = [allSizes stringByAppendingString: jacket.size];

//Show allSizes in the second column

【讨论】:

没错,但为了方便起见,我想进行绑定,以便它根据第一列中选​​择的夹克自动更新。经过大量调整后,我设法解决了它。请看下面我的回答。谢谢,汉斯【参考方案2】:

我终于解决了。我犯了两个错误:

    我试图在一个 NSTableView 中绘制树状结构。因为这不支持我在第一个表中有 3 个实例,而在第二个表中有数百个实例。

    我必须将一个新的 NSArrayController 绑定到第二个 NSTableView 并将其内容集绑定到我的 Jackets NSArrayController 的选择。

解决了!

【讨论】:

以上是关于核心数据 - 从一对多关系中检索属性的主要内容,如果未能解决你的问题,请参考以下文章

如何以一对多关系访问数据?

核心数据:在一对多关系中按日期属性排序

如何在 django 中从一对多关系中检索数据?

IOS:通过一对多关系获取核心数据

涉及新实体和一对多关系的核心数据迁移

谓词匹配一对多关系核心数据