gpt4 book ai didi

objective-c - 如何在填充与其关联的 NSMutableArray(绑定(bind))时刷新 NSTableVIew

转载 作者:行者123 更新时间:2023-12-04 12:30:32 33 4
gpt4 key购买 nike

我尝试将我的 NSArraycontroller 绑定(bind)到 NSMutableArray;该数组包含“iData”类型的对象(这是一个自定义类)。该类还包含一些 NSMutableString 变量,这些变量被设置为 KVC 的键。然后我将我的 NSTableColumn 绑定(bind)到 NSArrayController 并分别设置每一列的关键模型路径。

当我尝试填充数组时,GUI 没有显示任何内容。我忘记了什么?

最佳答案

所以您很可能很久以前就解决了这个问题,但万一其他人偶然发现了这个问题...

I am populating the array via NSMutableArray, but I am not sure how can I populate the array via NSArrayController, since I don't have the instance in my Controller.m class. Please tell me how can I resolve this issue.

你可能正在做类似的事情

[myData addObject:someObject];

但是,您的 NSArrayController 不会获悉对 NSMutableArray 实例的更改,因为 addObject 不符合 KVC。您需要通知任何正在观察您的 NSMutableArray 实例已更改的对象。至少有两种方法可以做到这一点。假设您的 NSMutableArray 实例属性被命名为“myData”,那么您可以执行如下操作:

[self.willChangeValueForKey:@"myData"];
[myData addObject:someObject];
[self.didChangeValueForKey:@"myData"];

NSMutableArray *bindingsCompliantArray = [self mutableArrayValueForKey:@"myData"];
[bindingsCompliantArray addObject:someObject];

Another SO answer (链接)对 mutableArrayValueForKey 的实际作用有很好的解释,但我建议阅读有关键值编码和键值观察的 Apple 开发人员文档,以帮助理解它。

I have dragged the NSController instance in my mainmenu.nib tray. Do i need to declare an IBOutLet NSArrayController in my Controller.h file and then connect it with the NSArrayController instance in the tray ?

您的 nib 文件中需要一个 NSArrayController 实例,但对于您在此处描述的情况,您的界面中不需要一个 IBOutlet。 NSArrayController 应该绑定(bind)到 NSMutableArray 的键(在我的示例中是 myData),听起来您已经正确绑定(bind)了表列。

关于objective-c - 如何在填充与其关联的 NSMutableArray(绑定(bind))时刷新 NSTableVIew,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4049727/

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