NSSortDescriptor 和 [__NSCFNumberlocalizedStandardCompare:]:发送到实例的无法识别的选择器
Posted
技术标签:
【中文标题】NSSortDescriptor 和 [__NSCFNumberlocalizedStandardCompare:]:发送到实例的无法识别的选择器【英文标题】:NSSortDescriptor and [__NSCFNumber localizedStandardCompare:]: unrecognized selector sent to instance 【发布时间】:2015-11-24 20:11:39 【问题描述】:我正在使用排序描述符对 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 并填充它),但每次尝试使用新添加的描述符时应用程序都会崩溃。
描述符很简单: let sortDescriptor4 = NSSortDescriptor(key: "the_int16_property", 升序: false, selector: "localizedStandardCompare:")
我很茫然。任何建议都会有所帮助。
谢谢!
【问题讨论】:
【参考方案1】:localizedStandardCompare:
是NSString
的方法
“比较按 Finder 排序的字符串”。
numerical Core Data 属性(如“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)
【讨论】:
谢谢!这实际上是一个复制粘贴错误。甚至没有注意到它!以上是关于NSSortDescriptor 和 [__NSCFNumberlocalizedStandardCompare:]:发送到实例的无法识别的选择器的主要内容,如果未能解决你的问题,请参考以下文章
选择 UISegmentedControl 控件会导致 SIGABRT
值 YpartialUnification 不是 scala.tools.nsc.Settings 的成员
NSFetchedResultsController,分组 UITableView、HeaderInSection 和 NSSortDescriptor
无法获取 cpu pod 指标,k8s-containerd-containerd-shim-runsc-v1-gvisor