2011-01-27 100 views
0

比方说,我们有以下模型:核心数据 - 从一个一对多的关系,获取属性

ENTITY1:人
关系:夹克

ENTITY2:夹克
属性:尺寸
关系:业主

因此,我们有:
所有者< - >>夹克(每个人都可以有很多外套,但外套只能有一个业主)

让我们建立一个NSTableView的有2列。我绑定第一个显示所有人。然后我想让第二栏显示第一栏中选定所有者的夹克尺寸。要获得第一列是微不足道的,但我如何绑定第二列?我是否需要另一个NSArrayController来表示Jackets实体,还是可以直接使用类似于(这不起作用)的方式将列绑定到Person NSArrayController并在值绑定控制器键下:选择&模型关键路径:arrangedObjects.size。当我尝试这个时,我得到错误:

[addObserver:forKeyPath:@“arrangedObjects.Jacket.size”选项:0x0上下文:0x0]被发送到与“排列的物体”属性不符合KVC的对象。

感谢, 汉斯

回答

0

我终于解决了这个问题。我做了两个错误:

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

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

解决了!

0

你可以通过一个人的夹克循环只是通过调用aPerson.jackets:

NSMutableString *allSizes = [NSMutableString string]; 
for (Jacket *jacket in aPerson.jackets){ 
    allSizes = [allSizes stringByAppendingString: jacket.size]; 
} 
//Show allSizes in the second column 
+0

这是正确的,但我希望为了方便进行绑定,以便根据第一列中的选定夹克自动更新。经过很多调整,我设法解决它。请参阅下面的答案。谢谢,汉斯 – salomons 2011-02-03 07:57:51