cocoa - NSComboBox 显示属性的 coredata 实体绑定(bind)中的唯一项目

标签 cocoa cocoa-bindings nsarraycontroller nscombobox

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

有什么办法可以过滤它以删除重复的值吗?我尝试制作第二个绑定(bind)到 Pigeons.arrangedObjects.colour 的 NSArrayController 并设置 NSPredicate 来过滤它,但我可以似乎没有找出用于过滤重复值的 NSPredicate 。我想对颜色值使用绑定(bind),以便在应用程序运行时,如果添加或删除颜色(可能在输入颜色时犯了错误),则下拉列表将更新为仅具有当前输入的鸽子颜色值。

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

最佳答案

我正在使用手机,有点懒,但我认为您正在寻找类似以下的键路径:@“@distinctunionofobects.someproperty”...或谷歌键路径运算符。

关于cocoa - NSComboBox 显示属性的 coredata 实体绑定(bind)中的唯一项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10384615/

相关文章:

xcode - 如何在 macOS 下模拟内存不足的情况?

objective-c - 在 Linux 机器上构建 Xcode 项目

cocoa - Cocoa 中的自动键值观察

cocoa - TableView 未根据绑定(bind)更新 - 第二部分

objective-c - 按列标题对表格进行排序并保持 NSArrayController 同步

objective-c - NSArrayController 与 NSMutableArray - 什么时候使用 NSArrayController?

objective-c - 动态本地化 MainMenu.xib

iphone - NSPersistentStoreCoordinator 线程安全吗?

ios - OS X 核心绑定(bind)在使用 Storyboard 时不保存核心数据

cocoa - 显示序列号在使用 NSArrayController 和 cocoa 绑定(bind)的表列中