用于查找自日期以来x天的核心数据谓词

时间:2014-02-18 14:57:04

标签: ios iphone objective-c core-data nspredicate

我有核心数据模型:

Book
----
name 
release_date 

我需要从release_date获得至少两天的所有书籍 我希望用NSPredicate(不是将所有书籍加载到内存中,而不是循环和检查)

我正在寻找的是这样的:

NSDate *now = [NSDate date];
NSPredicate *pred = [NSPredicate predicateWithFormat:@"release_date + "48 hours" <= %@", now];

2 个答案:

答案 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];