gpt4 book ai didi

cocoa - 在 Cocoa 中如何从这个可变数组更新 NSTableView ?

转载 作者:行者123 更新时间:2023-12-03 18:02:15 25 4
gpt4 key购买 nike

在我的应用程序中,我有一个 NSTableView,其中应包含文件列表。我有一个按钮,用于打开对话框并以编程方式将文件添加到此列表中。一段时间以来,当我添加文件时,我无法更新表格 View ,因为我使用了以下代码:

[self.newPackage.files addObject:fileURL];

现在我觉得这行不通了。据我了解,上面的代码行将“在 Controller 背后”更改可变数组。

我能够拼凑出一个可行的解决方案,主要来自 this question ,使用以下代码:

NSMutableArray *bindingsCompliantArray = [[self valueForKey:@"newPackage"] mutableArrayValueForKey:@"files"];
[bindingsCompliantArray addObject:fileURL];

但是,我不明白这是如何工作的。 bindingsCompliantArray 也没有在其他地方使用。我看过documentation for mutableArrayValueForKey ,但这并没有使它变得更清晰。有没有人可以帮助解释这是如何工作的?

最佳答案

-mutableArrayValueForKey: 方法返回一个代理数组,您可以将其视为原始数组,还有一个好处是,任何观察该数组的 KVO 观察者都会观察到该数组的更改。

NSController 子类(例如 NSArrayController)使用键值观察来监视它们观察的对象的更改。

当您通过此方法收到代理数组时,NSMutableArray 方法(例如 -addObject:)将被观察者注意到,而对于标准数组,情况并非如此.

关于cocoa - 在 Cocoa 中如何从这个可变数组更新 NSTableView ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5236060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com