2

我正在尝试创建一个NSPredicate(用于与 aNSFetchRequest中的核心数据一起使用NSFetchedresultsController),它根据当前时间过滤记录。

不是创建谓词的时间:

[NSPredicate predicateWithFormat:@"(criticalDate < %@)", [NSDate date]]

但是评估谓词的时间,因为我想避免一直用新的 fetchRequests 更新 fetchedResultsController。我正在寻找的(但我自己找不到)是这样的:

[NSPredicate predicateWithFormat:@"(criticalDate < ????)"]

它适用于 iPhone,这意味着它now()不受支持,所以我想无论解决方案是什么,它都会是一种 hack。

提前致谢

4

2 回答 2

7

你想使用:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"criticalDate < now()"];
于 2012-05-19T17:48:35.880 回答
0

如果您在 fetch 之前创建谓词,则创建谓词的时间与执行 fetch 的时间之间的差异最多可能是一毫秒。

我无法想象一个重要的使用场景。请解释。

但是,如果那个时间差对你来说真的太大了,我建议下面的解决方案。运行几个测试以确定最可能的时间差是多少。然后,当您创建谓词时,将时间差添加到未来。因此:

[NSPredicate predicateWithFormat:@"criticalDate < %@", 
   [[NSDate date] dateByAddingTimeInterval:0.001]]; 

我想这个问题有点学术...... :-)

于 2012-05-19T19:04:29.147 回答