我正在尝试根据特定键中的值过滤NSArray对象。我的对象在创建时有一个日期,所以基本上,我想创建三个月的对象,但每周只显示一个,因此,我需要过滤结果以根据日期显示对象。
我有一个数据库,其中包含创建这些对象所需的所有信息。我的第一个想法是在此数据库中创建一个句点键,指定该对象可用的时间长度。例如,对象1在“句点”键中具有数字604800(一周的timeInterval)。现在,为了检索这些对象,我需要比较两个键,createdAt是NSDate
,timeInterval是NSNumber
。
我尝试在我的表中创建两个NSDate
列并使用谓词:[NSPredicate predicateWithFormat:"(startDate <= %@) AND (endDate >= %@"), today, today];
,虽然我会有更多工作来创建具有这两个添加列的对象,但是上面提到的谓词并没有工作,我不知道为什么。
无论如何,我正在寻找一个简单的解决方案和一些代码。
答案 0 :(得分:0)
您不必创建和填充额外的列,因为您可以进行简单的算术运算 在谓词中,例如:
[NSPredicate predicateWithFormat:@"createdAt <= %@ AND createdAt + period >= %@", today, today]
其中createdAt
是&#34;日期&#34;属性和period
a&#34; Double&#34;属性。
更新:正如我刚刚意识到的那样,只有在你设置了
时才有效[request setIncludesPendingChanges:NO];
这意味着只对已保存的数据库执行提取,但确实如此 不包括未保存的更改。