使用NSPredicate比较日期以检索符合条件的对象

时间:2013-12-27 11:15:11

标签: ios objective-c nspredicate

我正在尝试根据特定键中的值过滤NSArray对象。我的对象在创建时有一个日期,所以基本上,我想创建三个月的对象,但每周只显示一个,因此,我需要过滤结果以根据日期显示对象。

我有一个数据库,其中包含创建这些对象所需的所有信息。我的第一个想法是在此数据库中创建一个句点键,指定该对象可用的时间长度。例如,对象1在“句点”键中具有数字604800(一周的timeInterval)。现在,为了检索这些对象,我需要比较两个键,createdAt是NSDate,timeInterval是NSNumber

我尝试在我的表中创建两个NSDate列并使用谓词:[NSPredicate predicateWithFormat:"(startDate <= %@) AND (endDate >= %@"), today, today];,虽然我会有更多工作来创建具有这两个添加列的对象,但是上面提到的谓词并没有工作,我不知道为什么。

无论如何,我正在寻找一个简单的解决方案和一些代码。

1 个答案:

答案 0 :(得分:0)

您不必创建和填充额外的列,因为您可以进行简单的算术运算 在谓词中,例如:

[NSPredicate predicateWithFormat:@"createdAt <= %@ AND createdAt + period >= %@", today, today]

其中createdAt是&#34;日期&#34;属性和period a&#34; Double&#34;属性。

更新:正如我刚刚意识到的那样,只有在你设置了

时才有效
[request setIncludesPendingChanges:NO];

这意味着只对已保存的数据库执行提取,但确实如此 不包括未保存的更改。