我熟悉使用NSCalendar
和NSDateComponents
仅比较NSDate
的某些组件。但是,我想知道是否有可能使用NSPredicate
来过滤日期数组或获取具有日期作为其中一个属性的核心数据实体。
例如,假设我正在存储具有属性Person
的核心数据实体birthday
。 birthday
是一个NSDate,用于存储此人生日的日期和时间。我可以使用NSPredicate
(或其他任何内容)在晚上7点之后仅使用Person
s获取birthday
的内容吗?
或者我是否必须分别存储日期和时间才能实现此目的? (比如说,存储birthdayDate
和birthdayTime
。)
(我尝试使用仅包含时间组件的NSDate
进行过滤,似乎所有NSDate
个缺失日期组件都被认为比NSDates
更早且具有日期和时间成分。)
答案 0 :(得分:3)
NSPredicate有一个+predicateWithBlock:
,允许您使用任意逻辑创建自定义谓词。但是,您不能将以这种方式创建的谓词用作从SQLLite存储中获取CoreData的谓词。在这种情况下,您将执行通用提取,然后使用-[NSArray filteredArrayUsingPredicate:]
过滤结果。
答案 1 :(得分:0)
这是核心数据。你必须反时间化。