在我的应用程序中,我有一个NSTableView应该包含一个文件列表。我有一个按钮用于打开对话框并以编程方式将文件添加到此列表中。有一段时间,我不能让表视图更新,当我添加文件,因为我用的是下面的代码:从可变数组中更新NSTableView如何在Cocoa中工作?
[self.newPackage.files addObject:fileURL];
这对我来说很有意义,现在,这是行不通的。据我了解,上面的代码行将改变可控阵列“在控制器背后”。
我能拼凑出一个可行的解决方案,主要来自this question,用下面的代码:
NSMutableArray *bindingsCompliantArray = [[self valueForKey:@"newPackage"] mutableArrayValueForKey:@"files"];
[bindingsCompliantArray addObject:fileURL];
不过,我不明白这是如何工作。 bindingsCompliantArray也不会在其他地方使用。我已经看过documentation for mutableArrayValueForKey,但它没有让它更清晰。有没有人可以帮助解释这是如何工作的?
我花了一个月才终于觉得我明白了这里发生了什么,但似乎你的答案是现货,尽管对于Cocoa新手(我)来说有点模糊。 http://stackoverflow.com/questions/2293448/what-is-the-kvc-search-pattern-for-mutablearrayvalueforkey/2294715#2294715和http://stackoverflow.com/questions/302365/observing-an-nsmutablearray- for-insertion-removal/304143#304143也有助于我理解这是如何工作的。 – 2011-04-21 22:51:39