2011-01-27 9 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