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

时间:2011-01-27 21:08:01

标签: objective-c core-data

假设我们有以下模型:

实体1 :人员 关系:夹克

实体2 :夹克
属性:尺寸
关系:所有者

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

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

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

谢谢, 汉斯

2 个答案:

答案 0 :(得分:0)

你可以通过调用aPerson.jackets:

来遍历一个人的夹克
NSMutableString *allSizes = [NSMutableString string];
for (Jacket *jacket in aPerson.jackets){
  allSizes = [allSizes stringByAppendingString: jacket.size];
}
//Show allSizes in the second column

答案 1 :(得分:0)

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

  1. 我试图在一个NSTableView中绘制一个类似树的结构。由于这不支持我在第一个表格中有3个实例而在第二个表格中有数百个。

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

  3. 解决了它!