我正在尝试创建一个NSPredicate
(用于NSFetchRequest
中的核心数据,NSFetchedresultsController
),根据当前时间过滤记录。
不创建谓词的时间:
[NSPredicate predicateWithFormat:@"(criticalDate < %@)", [NSDate date]]
但是评估谓词的时间,因为我想避免一直使用新的fetchRequests更新fetchedResultsController。我正在寻找的东西(但我自己找不到)是这样的:
[NSPredicate predicateWithFormat:@"(criticalDate < ????)"]
适用于iPhone,这意味着now()
不受支持,所以无论解决方案是什么,它都会是一种黑客攻击。
提前致谢
答案 0 :(得分:7)
您想使用:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"criticalDate < now()"];
答案 1 :(得分:0)
如果在获取之前创建谓词,则创建谓词的时间与执行获取的时间之间的差异最多为1毫秒。
我无法想象这对任何重要的使用场景。请解释一下。
但是,如果这个时间差异真的太大了,我建议采用以下解决方案。运行几个测试来找出最可能的时差。然后,在创建谓词时,将时差添加到将来。因此:
[NSPredicate predicateWithFormat:@"criticalDate < %@",
[[NSDate date] dateByAddingTimeInterval:0.001]];
我想这个问题有点学术......: - )