使用CoreData,我有一个实体“书签”,它有一个与另一个实体“Tag”名为“tags”的多对多关系,以及一些共同属性(字符串,日期,......)。
在NSTableView中,我们通过Binding:
显示Bookmarks实体有效。现在,当我点击列标题时,整个表格视图的排序正确,除了“标记”列,我得到了这个:
-[_NSFaultingMutableSet compare:]: unrecognized selector sent to instance
当然,从这个多对多关系中的“设置”不会响应选择器'compare:'。
问题: 我怎样才能做到这一点?我怎样才能对多对多关系进行排序?
是否可以使用ValueTransformer?如果我可以提供一个可以进行比较的自定义类:让ArrayController知道......
答案 0 :(得分:0)
一种可能的黑客攻击:由于_NSFaultingMutableSet是一个NSSet,我们可以通过类别添加选择器'compare:'。
@interface NSSet (someAdditions)
- (NSComparisonResult)compare:(NSSet *)anotherSet;
@end
@implementation NSSet (someAdditions)
- (NSComparisonResult)compare:(NSSet *)aSet {
...
}
@end
我们现在可以按照我们的意愿实现这个比较:选择器,例如比较每个集合的计数,或者以某种方式比较它们的NSString表示。
它适用于我的应用程序。我在NSTableColumn的绑定上重新启用了“创建排序描述符”,现在可以单击我的tableView的标题进行排序。
这是一个黑客,因为它会影响所有NSSet ......但至少我有我的钩子。
您怎么看?