Xcode,OS X:查看简单的NSMutableArray

问题描述:

相关的新手问题。我的应用程序有一个NSNumbers的简单NSMutableArray。 (大约十几个整数)我希望我的UI有一个显示数字的视图,以便用户知道数组中的内容。我希望视图的内容是最新的,所以我想我想绑定到数组(或其内容)。有没有简单的方法来做到这一点?Xcode,OS X:查看简单的NSMutableArray

我想我可以算出来,如果我改变我的模式,使NSMutableArray中包含具有setter和getter,以声明的属性(以下卢卡斯YouTubtorial上NSTableView的绑定)的自定义类,但我认为,有可能做一个简单的方法,让我可以使用我的数组NSNumbers。如果必须重做我的NSMutableArray,我必须进行大量的编辑。谢谢...

您可以在模型中使用普通的旧的NSNumbers(或其他任何东西),不需要使用自定义模型类。但是,如果模型数据需要任何特殊格式的视图,则可以创建NSValueTransformer子类。

在你的NIB中你将有一个NSTableView和一个NSArrayController。

将TableView列的Value属性绑定到NSArrayController,controller key = arrangedObjects,Model Key Path为空(因为您正在查看NSNumber实例本身,而不是NSNumber的属性)。

将NSArrayController的内容数组属性绑定到您的模型(NSNumbers的NSMutableArray)。这可能是您的视图控制器或应用程序委托的属性。

就是这样。您还可以将按钮连接到NSArrayController上的add:remove:操作,并且您将能够添加和删除阵列中的项目。

此外,只要您的NSMutableArray更改,就需要发送KVO通知。例如,假设您的NSMutableArray是通过一个名为属性公开的“数字”:

[self willChangeValueForKey:@"numbers"]; 
[_numbers addObject:[NSNumber numberWithInt:123]]; 
[self didChangeValueForKey:@"numbers"]; 

您收到这类通知免费,如果你设置的“数字”属性设置为一个新值:

self.numbers = [NSMutableArray arrayWithObject:foo]; 
+1

你”如果您实现并使用正确命名的可变访问方法,也可以免费获得这些通知。在这里阅读更多:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/KeyValueCoding/Articles/AccessorConventions.html。总之,你执行: ` - (NSUInteger)countOfNumbers; - (NSNumber *)objectInNumbersAtIndex:(NSUInteger)index; (void)insertObject:(NSNumber *)aNumber inNumbersAtIndex:(NSUInteger)index; - (void)removeObjectFromNumbersAtIndex:(NSUInteger)index; - (void)replaceObjectInNumbersAtIndex:(NSUInteger)withObject:(NSNumber *)aNumber` – 2011-12-15 22:39:20