相对新手问题。我的应用程序有一个NSNumbers的简单NSMutableArray。 (大约十二个整数)我希望我的UI有一个显示数字的视图,以便用户知道数组中的内容。我希望视图的内容是最新的,所以我想我想要一个绑定到数组(或其内容)。有一种简单的方法可以做到这一点吗?
我想我可以解决这个问题,如果我改变我的模型,以便NSMutableArray包含一个自定义类,它具有一个setter和getter到一个声明的属性(在NSTableView绑定上的Lucas'YouTubtorial之后),但我认为可能有一种更简单的方法,允许我使用我的NSNumbers数组。如果我必须重做我的NSMutableArray,我必须做相当多的编辑。谢谢......
答案 0 :(得分:1)
您可以在模型中使用普通的旧NSNumbers(或其他任何东西),无需使用自定义模型类。但是,如果模型数据需要视图的任何特殊格式,则可以创建NSValueTransformer子类。
在你的NIB中你将拥有一个NSTableView和一个NSArrayController。
将TableView列的Value属性绑定到NSArrayController,控制器键= arrangeObjects,模型键路径为空(因为您正在查看NSNumber实例本身,而不是NSNumber的属性)。
将NSArrayController的Content Array属性绑定到您的模型(NSNumbers的NSMutableArray)。这可能是您的视图控制器或应用代理的属性。
就是这样。您还可以将按钮连接到NSArrayController上的add:
和remove:
操作,并且您将能够在阵列中添加和删除项目。
此外,每当NSMutableArray发生更改时,您都需要发送KVO通知。例如,假设您的NSMutableArray通过名为“numbers”的属性公开:
[self willChangeValueForKey:@"numbers"];
[_numbers addObject:[NSNumber numberWithInt:123]];
[self didChangeValueForKey:@"numbers"];
如果将“numbers”属性设置为新值,则可以免费获得这些通知:
self.numbers = [NSMutableArray arrayWithObject:foo];