我正在使用排序描述符对NSManagedObject(CoreData)的数组进行排序。
我有两个Int16值的排序描述符(今天添加了第二个)。
出于某种原因,当尝试使用添加的描述符对数组进行排序时,它会崩溃:
[__NSCFNumber localizedStandardCompare:]: unrecognized selector sent to instance
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFNumber localizedStandardCompare:]: unrecognized selector sent to instance
我甚至尝试更改我的数据模型(将属性添加为Int16并填充它)但每次尝试使用新添加的描述符时应用程序都会崩溃。
描述符非常简单: 让sortDescriptor4 = NSSortDescriptor(key:“the_int16_property”,升序:false,选择器:“localizedStandardCompare:”)
我不知所措。任何建议都会有所帮助。
谢谢!
答案 0 :(得分:1)
localizedStandardCompare:
是NSString
的方法
“比较由Finder排序的字符串”。
数值的键值编码核心数据属性(如“Int 16”)使用NSNumber
个实例,该类不响应
localizedStandardCompare:
。
只需使用默认的compare:
选择器:
NSSortDescriptor(key: "the_int16_property", ascending: false, selector: "compare:")
// Swift 2.2 or later:
NSSortDescriptor(key: "the_int16_property", ascending: false, selector: #selector(NSNumber.compare(_:)))
或只是
NSSortDescriptor(key: "the_int16_property", ascending: false)