當更新基礎數組的方法被調用時,我需要做什麼來更新綁定到NSArrayController的tableView?一個例子可能會澄清這一點。NSArrayController和KVO
當我的應用程序啓動時,它會創建一個SubwayTrain。當SubwayTrain初始化時,它會創建一個SubwayCar。 SubwayCar有一個可變數組'乘客'。當一輛地鐵車輛被初始化時,乘客陣列被創建,並且放入一些People對象(比如說一個名爲「收票員」的人和一個名爲「無家可歸的人」的人)。這些人總是在SubwayCar上,所以我在初始化時創建它們並將它們添加到乘客陣列中。
在應用程序的生命中,人們登上汽車。在SubwayCar上調用addPassenger,並將其作爲參數傳入。
我有一個NSArrayController綁定到subwayTrain.subwayCar.passengers,並在推出時,我的門票收藏家和無家可歸的人顯示罰款。但是當我使用[subwayCar addPassenger:]時,tableView不會更新。我已經確認,乘客肯定會加入陣列,但沒有更新的gui。
我可能會做錯什麼?我的直覺是它與KVO相關 - 當addPassenger被調用時,數組控制器不知道更新(即使addPassenger調用[passengers addObject:]。我在這裏會發生什麼錯誤 - 如果它有幫助,我可以發佈代碼。
由於任何人願意幫忙。
UPDATE
所以,事實證明我能得到這個由addPassenger方法改變從
[seatedPlayers addObject:person];
工作
NSMutableSet *newSeatedPlayers = [NSMutableSet setWithSet:seatedPlayers];
[newSeatedPlayers addObject:sp];
[seatedPlayers release];
[self setSeatedPlayers:newSeatedPlayers];
我想這是因爲我正在使用[self setSeatedPlayers]。這是做到這一點的正確方法嗎?複製數組,複製舊數據並更新副本(而不是僅添加到現有數組)似乎非常麻煩。
如何將表視圖綁定到控制器?你有沒有將每個表列綁定到'subwayTrain.subwayCar.passengers'屬性(例如,列名綁定到'subwayTrain.subwayCar.passengers.name')? – outis 2010-01-15 03:59:50
是的。旅客名單在啓動時顯示。 – 2010-01-15 04:32:30