首先:我已經在這裏閱讀了幾次與這個問題有關的問題,我發佈了這個意識,人們可能會認爲這是一個重複的問題。但是我不得不說,作爲初學者,我還沒有找到任何有用的信息,所以我希望這個問題對我和其他人都很清楚。如何爲KVO使用mutableArrayValueForKey?
如何理解綁定& KVC /志願
考慮一下:我有一個數組(在我的AppDelegate),一個ArrayController和視圖元素,比如,NSTableView的。我將AppDelegate中的NSMutableArray綁定到ArrayController,而後者又綁定到NSTableView。
在NSTableView中更改某個對象的屬性會導致該對象屬性的實際更改。到目前爲止它的工作。但是,更改NSMutableArray中的某些內容(例如添加項目)不會更新NSTableView。
可能的解決方案我現在已經讀到
我已閱讀多個答案。一個答案似乎表明,我不應該添加任何東西到數組本身,但只能添加到ArrayController。我不確定這是否正確,但如果這是一個可能的解決方案,那麼獲得關於如何做到這一點的更多細節將是非常好的。
其他解決方案提了以下方法:
- valueForKey:
- valueForKeyPath:
- dictionaryWithValuesForKeys:
- valueForUndefinedKey:
- mutableArrayValueForKey:
特別:
- mutableArrayValueForKey:
如何使用mutableArrayValueforKey?
我在做什麼不是然而,知道如何在我的應用程序中使用這些方法中的任何一種。 mutableArrayValueForKey方法返回一個NSMutableArray。我必須用這個創建一個新的數組嗎?
現在,我正在做的是這樣的。
self.vocabList = [[NSMutableArray alloc] init];
,後來,在一個方法,我填充數組:
for (NSObject* o in meaningsArray)
{
NSLog(@"%@",o);
Vocab *temp = [[Vocab alloc] init];
[temp setValue:@"w" forKey:@"word"];
[temp setValue:@"m" forKey:@"meaning"];
[self.vocabList insertObject:temp atIndex:[self.vocabList count]];
}
如果一切我所說的是正確的,到目前爲止,我的問題是:會在哪裏mutableArrayValueForKey:進入圖片當想要更新NSTabeleView?或者我是否首先誤解了某些東西?
非常感謝你。我添加了一個觀察者,這似乎是確定的。但我不明白我必須實現checkchanges方法和更改數組方法嗎?另外,當我嘗試向數組添加某些內容時,我收到'收到但未處理的消息'錯誤。 :( – chrisnolten
一切都是單一類的一部分(在我的情況下,它是ViewController) 對於開始,嘗試在'viewDidLoad'中添加觀察者,例如 'observeValueForKeyPath:'方法是KVO默認的,所以。把它放在你在你的類時調用此方法,其中系統接收關於對象的更改通知和這裏的陣列已經包含了變化 使用changesmthinarray的: ' - (無效)removeAllSelectedObjects { int count = [selectedIndexPaths count]; for(int i = count-1; i> -1; i--){self removeObjectFromSelectedIndexPathsAtIndex:i] ; } } ' – CheshireKat