NSComboBox用于显示属性的coredata实体绑定中的唯一项

时间:2012-04-30 13:37:02

标签: cocoa cocoa-bindings nsarraycontroller nscombobox

我有一个典型的Mac CoreData应用程序,它在NSTableView中使用NSArrayController显示我的实体,在右侧显示一个面板,用于编辑/显示NSTableView中当前选定的项目。我有一个Entity(鸽子)NSString属性(颜色)显示在NSComboBox中,以便用户可以为颜色输入自己的字符串或选择以前选择的颜色从下拉列表中。这是通过将NSComboBox的内容值绑定到Pigeons.arrangedObjects.colour来完成的。这与我想要的接近,但因为它是鸽子所有颜色的数组(而不是一组),所以NSComboBox的下拉列表中列出了重复的值。因此,如果例如为一只鸽子的颜色输入蓝色,并且还为第二只鸽子选择了蓝色,那么蓝色将在列表中显示两次。

是否有某种程度上,我可以过滤这个以删除重复值?我已尝试制作第二个NSArrayController,该Pigeons.arrangedObjects.colour绑定到NSPredicate并设置NSPredicate来过滤它,但我似乎无法找出{{1}}过滤掉重复的值。我想使用绑定作为颜色的值,以便在应用程序运行时,如果添加或删除颜色(可能在输入颜色时出错),则下​​拉列表将更新为仅具有目前输入的鸽子颜色值。

不显示这些重复值的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

我在手机上有点懒,但我认为你正在寻找一个看起来像这样的密钥路径:@“@ distinctunionofobects.someproperty”......或google keypath运营商。