0

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

我想要这样做的原因(除了这似乎是一件有用的事情)是:

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

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

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

一定有办法得到我需要的结果(这似乎是一个普遍的问题),请帮忙!

干杯,

奥利

4

2 回答 2

1

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

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

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

于 2010-09-15T18:12:04.707 回答
0

If you have some way to ask a car whether it is red or blue, you can create two secondary array controllers fed by the primary (bind secondary controller's content array to the primary controller's arrangedObjects) each with a filter predicate that restricts the array to the proper color of car.

于 2010-09-15T17:49:18.317 回答