每个NSArrayController多个筛选列表

时间:2011-09-15 17:25:32

标签: cocoa nsmutablearray cocoa-bindings nsarraycontroller

我需要做的很简单,比如我有一个学生域对象列表

@implementation Student : CPObject
{
    CPString name @accessors;
    BOOL isLate @accessors;
    BOOL isMale @accessors:
}

我有一个Student对象的列表,这些对象存储在NSMutableArray中,它是我的模型对象的一部分。

我有一个NSTableView来显示这些Student个对象,该表格包含用于修改isLateisMale属性的复选框。该表由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类,其maleStudentslateStudents,{{1}}属性用于绑定?对于这么简单的事情来说,这似乎有些过分了。

总的来说,这似乎是一个非常普通和简单的操作,但我对Cocoa相对较新,所以我真的不确定这是什么“正确”的方法。请赐教。

0 个答案:

没有答案