[__NSDate caseInsensitiveCompare:]:无法识别的选择器发送到实例
Posted
技术标签:
【中文标题】[__NSDate caseInsensitiveCompare:]:无法识别的选择器发送到实例【英文标题】:[__NSDate caseInsensitiveCompare:]: unrecognized selector sent to instance 【发布时间】:2014-02-27 09:47:10 【问题描述】:我正在使用Magical Record
.. 我正在使用NSFetchRequest
喜欢:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(due_at < %@) AND complete == 0",startDate];
NSArray *taskArray = [Task MR_findAllSortedBy:@"due_at" ascending:NO withPredicate:predicate];
我已登录控制台,它是:
<NSFetchRequest: 0x16b239b0> (entity: Task; predicate: (due_at < CAST(415186806.000000, "NSDate") AND complete == 0); sortDescriptors: ((
"(due_at, descending, caseInsensitiveCompare:)"
)); batch size: 20; type: NSManagedObjectResultType; )
这会导致我出现以下错误:
[__NSDate caseInsensitiveCompare:]: unrecognized selector sent to instance
我该如何解决这个问题..
【问题讨论】:
due_at的属性类型是什么?我的猜测是这是一个字符串,你需要将它设置为日期 排序描述符有问题,因为它看起来像是在尝试使用字符串排序,而不是数字排序。 是的,您正在使用 caseInsensitiveCompare: 进行排序 - 而 NSDate 只有 compare: 方法。 NSUUID 有同样的错误。谢谢@casedemora 的回答。 【参考方案1】:这应该可以帮助您解决这个问题:
NSFetchRequest *request = [Task MR_requestAll];
NSSortDescriptor *sortByDueAtDate = [NSSortDescriptor sortDescriptorWithKey:@"due_at" ascending:NO selector:@selector(compare:)];
[request setSortDescriptors:@[sortByDueAtDate]];
NSArray *results = [Task MR_executeFetchRequest:request];
//continue on with results
【讨论】:
以上是关于[__NSDate caseInsensitiveCompare:]:无法识别的选择器发送到实例的主要内容,如果未能解决你的问题,请参考以下文章
IOS--时间 NSDate,NSTimeInterval的一些转换