我刚刚意识到有两种方法可以使用NSArrayController。
将Controller绑定到和Array并将对象添加到Array。或者根本不使用任何数组,并将对象直接添加到Controller。
[racesArray addObject: [[Race alloc] initWithName:@"Human"] ];
或者
[myRacesController addObject: [[Race alloc] initWithName:@"Human"] ];
由于两个版本都能满足我的需求,我想知道哪种版本正确使用它。我想使用数组可能会更好但是因为NSArrayController也能够存储数据,为什么我不应该使用这个功能呢?
答案 0 :(得分:2)
两种方式都很好。如果你没有给它一个数组,NSArrayController
保持自己的数组。
答案 1 :(得分:2)
不要像在第一个示例中那样直接与数组对话。除非您明确发布有关它们的KVO通知,否则阵列控制器将无法找到您的更改,这很麻烦,很容易忘记。
我建议的方法是绑定数组控制器,然后为您的属性实现KVC-compliant array accessor methods,并在应用中的任何位置使用它们(类的init
和dealloc
方法除外)
这样,您的对象可以改变自己的数组,而无需显式发布KVO通知或了解阵列控制器。
答案 2 :(得分:0)
NSArrayController符合KVO标准,用于绑定UI元素。它还具有对象数组的附加元数据,例如selectedObject。 NSArray不提供这些便利对象。 NSArray只是一个数组,其上定义了常规数组运算符和方法。如果您不需要与UI元素绑定,请使用它。