我有核心数据模型:
Book
----
name
release_date
我需要从release_date获得至少两天的所有书籍
我希望用NSPredicate
(不是将所有书籍加载到内存中,而不是循环和检查)
我正在寻找的是这样的:
NSDate *now = [NSDate date];
NSPredicate *pred = [NSPredicate predicateWithFormat:@"release_date + "48 hours" <= %@", now];
答案 0 :(得分:5)
谓词不会更改您的日期。您应该创建适当的日期(基于当前日期,并使用NSDateComponents
)并将其传递给谓词。您可以在谓词中使用<=
来过滤旧日期。
换句话说,不要将问题视为:
@"release_date + "48 hours" <= %@", now
将其视为:
@"release_date <= %@", now - "48 hours"
所以问题只是让now - "48 hours"
日期传递给谓词。
答案 1 :(得分:4)
我想你想要这样的东西:
NSDate *date2DaysBefore = [NSDate dateWithTimeIntervalSinceNow:-2*24*3600];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"release_date <= %@", date2DaysBefore];