是否可以为NSArrayController创建自定义控制器键?有“ arrangedObjects”,“ selection”等键。可以实现自己的键吗?我似乎在任何地方都找不到任何信息。

我想要这样做的原因(除了似乎可以做的事之外)是:

我有实体“ Car”,具有属性“ color”和“ mileage”,以及一个数组控制器“ CarArrayController”,其中包含这些对象并将它们显示在表格中。在表格下方,我要两个文本字段,一个显示红色汽车的总行驶里程,另一个显示蓝色汽车的总行驶里程。显然,我可以显示所有汽车的总数:将值绑定到“ CarArrangedController.arrangedObjects。@ sum.mileage”,但是到目前为止,如果不实现更多的数组或阵列控制器,我将无法获得红色和蓝色汽车的单独总和。

如果我可以创建一个控制器密钥“ arrangedRedCarObjects”,显然只能返回红色汽车,则可以绑定到:“ CarArrangedController.arrangedRedCarObjects。@ sum.mileage”。

我似乎找不到任何方法来实现我的目标:(

必须有一种方法来获得我需要的结果(这似乎是一个通用问题),请帮忙!

干杯,

奥利

最佳答案

控制器键不仅仅是字符串:它们是NSArrayController的方法,每个方法都经过某种逻辑,创建一个对象,然后返回该对象。您不能只添加键,因为键后面没有任何逻辑。

因此,如果您不想制造更多的阵列控制器,则需要制造功能更强大的阵列控制器。制作一个NSArrayController的子类,该子类为所需的键实现方法,在这些方法中,向自己询问源数组(例如arrangedObjects),执行所需的任何限制和重新排列,然后返回该结果。

不要忘记将新方法声明为依赖于它们的源属性(例如,arrangedRedCarObjects依赖于arrangedObjects)。那就是将键添加到列表中将无法完成的另一件事:它不知道您的新键应依赖于哪些源属性。

关于cocoa - cocoa :NSArrayController的自定义 Controller key ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3716596/

10-10 01:15