【发布时间】:2011-12-01 14:25:02
【问题描述】:
使用 CoreData,我有一个实体“书签”,它与另一个实体“标签”有一个名为“标签”的一对多关系,以及一些公共属性(字符串、日期、...)。
在 NSTableView 中,我们通过 Binding 显示 Bookmarks 实体:
- NSArrayController 绑定到文件的 Owner.managedObjectContext (标准 XCode CoreData 模板,managedObjectContext 在 AppDelegate 中)
- TableView 中的列绑定到它们各自的属性。特别是 Tag 列通过 NSValueTransformer 的子类绑定到这个 arrayController.arrangedObjects.tags ,这样我们就可以以 NSString 的形式显示一对多关系的摘要。
它工作。现在,当我单击列标题时,整个表格视图都会正确排序,除了我得到这个的“标签”列:
-[_NSFaultingMutableSet compare:]: unrecognized selector sent to instance
确保这种对多关系中的“设置”不会响应选择器“比较:”。
问题: 我怎样才能使这项工作?如何对一对多关系进行排序?
有类似 ValueTransformer 的东西吗?如果我可以提供一个自定义类来进行比较:让 ArrayController 知道...
【问题讨论】:
-
在 iOS 5 和 Mac OS X 10.7 中,我们订购了多对多关系。它不使用 NSSet,而是使用 NSOrderedSet。唉,它需要最新版本(我在 10.6 上运行)。除此之外,我在另一台机器上尝试了 10.7,但我无法在几个小时内使其正常运行......
标签: cocoa core-data cocoa-bindings nsarraycontroller