我需要做的很简单,比如我有一个学生域对象列表
@implementation Student : CPObject
{
CPString name @accessors;
BOOL isLate @accessors;
BOOL isMale @accessors:
}
我有一个Student
对象的列表,这些对象存储在NSMutableArray
中,它是我的模型对象的一部分。
我有一个NSTableView
来显示这些Student
个对象,该表格包含用于修改isLate
和isMale
属性的复选框。该表由NSArrayController
支持,该NSMutableArray
代理模型中的NSArrayController
。
否则在界面中,我希望有2个文本字段显示“已故学生人数”和“男学生人数”,以及我的问题所在。
由于NSArrayController
支持通过谓词进行过滤,我最初的想法是创建3个arrangedObjects.@count
个对象,一个用于代理tableview,对于每个聚合显示(已故学生人数,男生人数) 。对于聚合控制器,我将应用过滤并将文本字段绑定到NSMutableArray
。然而,这似乎是错误的方法,因为主控制器对NSArrayController
进行编辑将无法通知对其他2个控制器所做的更改。
这里提到了我想到的另一种方法。 http://cocoa-nut.de/?tag=nsarraycontroller。使用这种方法,我将绑定2“slave”StudentList
在支持tableview的“master”控制器上执行聚合操作。然而,这种方法似乎也不干净。
第三,我在这里阅读这篇文章:Singleton NSMutableArray accessed by NSArrayController in multiple NIB's。这往往表明我应该将复杂性转移到我的模型对象中。也许我应该创建一个allStudents
类,其maleStudents
,lateStudents
,{{1}}属性用于绑定?对于这么简单的事情来说,这似乎有些过分了。
总的来说,这似乎是一个非常普通和简单的操作,但我对Cocoa相对较新,所以我真的不确定这是什么“正确”的方法。请赐教。