NSSortDescriptor和[__NSCFNumber localizedStandardCompare:]:无法识别的选择器发送到实例

时间:2015-11-24 20:11:40

标签: swift swift2 nsmanagedobject nssortdescriptor

我正在使用排序描述符对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:”)

我不知所措。任何建议都会有所帮助。

谢谢!

1 个答案:

答案 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)