如何对NSStrings的NSTableColumn进行排序,忽略"The"和"A"?

Dav*_*rry 1 sorting cocoa core-data objective-c nstableview

我有一个简单的核心数据应用程序,我正在努力显示我的电影收藏.我正在使用一个NSTableView,它的列通过一个NSArrayController对象绑定到我的Core Data存储的属性.此时,单击列标题时,列的排序很好(对于数值).

我遇到的问题是字符串排序,它们排序,但它以标准字符串方式完成,大写字母在小写字母之前(即在a之前的Z).除了使案例排序正常工作之外,我希望能够在排序字符串时忽略"The"或"A"的前缀.

在Objective-C/Cocoa中,最好的方法是什么?

Dav*_*ong 6

在Interface Builder中,将Sort Key每个表列的字段设置为与要应用于托管对象的sortDescriptor相对应.

对于要忽略"A"和"the"的每个列,您必须在托管对象上创建一个额外的方法.如果你正在排序的属性是title,那么创建一个名为cleanedTitlebasic 的新方法,[self title]并删除"a"和"the".然后在Interface Builder中,告诉您的表列使用cleanedTitle排序键而不是title排序键.

  • David Barry:您将编写NSManagedObject的子类,并将其用作Core Data实体的类.(所以,对于"extend"部分是的.)不要覆盖`setValue:forKey:`; 添加一个名为`cleaningTitle`的新方法,该方法从`[self title]`派生它的值.您还希望使该属性依赖于model属性:http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Protocols/NSKeyValueObserving_Protocol/Reference/Reference.html#//apple_ref/OCC/CLM/NSObject的/ keyPathsForValuesAffectingValueForKey: (2认同)