我有一个每日一词的应用程序。我用NSSTRING
存储单词的日期,一切正常。但是,当我想显示数据库中的所有单词时,哪个日期小于[NSDate date]
- 这意味着今天,它并没有很好地排序。我使用NSpredicate来做到这一点。如何使它工作?
NSPredicate *predicate = [NSPredicate predicateWithFormat:
@"date <= %@", [NSDate date]];
[fetchRequest setPredicate:predicate];
即使我把字符串从当前日期开始,它也不起作用。我的意思是比较仅适用于当月,因为格式为:11.06.2014
答案 0 :(得分:2)
最佳解决方案是将日期存储为NSDate或数据库中的时间戳,并将其转换为NSString仅用于显示。
如果无法更改数据库方案,可以使用+ predicateWithBlock方法创建谓词:
NSPredicate *predicate = [NSPredicate predicateWithBlock: ^BOOL(YourManagetObj* obj, NSDictionary *bind){
NSDate* objDate = ... //convert string to date with the same date formatter you used to convert date to string
return [objDate earlierDate:[NSDate date]] == objDate;
}];
另请注意,使用您的方案时,您必须使用自定义谓词将存储的字符串转换为NSDate,以便按日期对对象进行排序。