仅使用NSPredicate将NSDate与时间组件进行比较

时间:2012-05-11 17:25:13

标签: iphone ios cocoa-touch nsdate nspredicate

我熟悉使用NSCalendarNSDateComponents仅比较NSDate的某些组件。但是,我想知道是否有可能使用NSPredicate来过滤日期数组或获取具有日期作为其中一个属性的核心数据实体。

例如,假设我正在存储具有属性Person的核心数据实体birthdaybirthday是一个NSDate,用于存储此人生日的日期和时间。我可以使用NSPredicate(或其他任何内容)在晚上7点之后仅使用Person s获取birthday的内容吗?

或者我是否必须分别存储日期和时间才能实现此目的? (比如说,存储birthdayDatebirthdayTime。)

(我尝试使用仅包含时间组件的NSDate进行过滤,似乎所有NSDate个缺失日期组件都被认为比NSDates更早且具有日期和时间成分。)

2 个答案:

答案 0 :(得分:3)

NSPredicate有一个+predicateWithBlock:,允许您使用任意逻辑创建自定义谓词。但是,您不能将以这种方式创建的谓词用作从SQLLite存储中获取CoreData的谓词。在这种情况下,您将执行通用提取,然后使用-[NSArray filteredArrayUsingPredicate:]过滤结果。

答案 1 :(得分:0)

这是核心数据。你必须反时间化。