【发布时间】: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 的回答。
标签: nsdate nspredicate nsfetchrequest case-insensitive magicalrecord