Iphone 仅通过时间组件将NSDate与NSPredicate进行比较
我熟悉使用Iphone 仅通过时间组件将NSDate与NSPredicate进行比较,iphone,ios,cocoa-touch,nsdate,nspredicate,Iphone,Ios,Cocoa Touch,Nsdate,Nspredicate,我熟悉使用NSCalendar和NSDateComponents仅比较NSDate的某些组件。但是,我想知道,在过滤日期数组或获取将日期作为属性之一的核心数据实体时,是否可以使用NSPredicate实现这一点 例如,假设我正在存储一个具有属性birthday的核心数据实体Person生日是一个NSDate,它存储了个人生日的日期和时间。我可以使用NSPredicate(或任何其他工具)在晚上7点后只取生日的人s吗 或者我必须单独存储日期和时间才能实现这一点?(例如,存储生日日期和生日日期) (
NSCalendar
和NSDateComponents
仅比较NSDate
的某些组件。但是,我想知道,在过滤日期数组或获取将日期作为属性之一的核心数据实体时,是否可以使用NSPredicate
实现这一点
例如,假设我正在存储一个具有属性birthday
的核心数据实体Person
<代码>生日是一个NSDate,它存储了个人生日的日期和时间。我可以使用NSPredicate
(或任何其他工具)在晚上7点后只取生日的人
s吗
或者我必须单独存储日期和时间才能实现这一点?(例如,存储生日日期
和生日日期
)
(我尝试过使用只有时间成分的NSDate
进行过滤,似乎所有NSDate
s缺少的日期成分都被认为比同时包含日期和时间成分的NSDates
更早。)这是核心数据。你必须对时间进行非规范化。它是核心数据。您必须对时间进行非规范化。NSPredicate有一个+predicateWithBlock:
,允许您使用任意逻辑创建自定义谓词。但是,不能使用以这种方式创建的谓词作为从SQLLite存储获取CoreData的谓词。在这种情况下,您需要执行一个通用的获取,然后使用-[NSArray filteredrayingpredicate:
NSPredicate有一个+predicateWithBlock:
来过滤结果,它允许您使用任意逻辑创建自定义谓词。但是,不能使用以这种方式创建的谓词作为从SQLLite存储获取CoreData的谓词。在这种情况下,您需要执行一个通用的获取,然后使用-[NSArray filteredarrayingpredicate:
过滤结果,我对编码还是相当陌生。。。那么,“非规范化”是指单独存储时间?哈哈:P还有,如果我已经有了一个Person
s数组(而不是通过核心数据获取实体)?你应该能够遍历Person数组来找到符合条件的人。您可以使用indexesOfObjectsPassingTest:
来进行此操作。好的,谢谢。最后一个问题。。。总的来说,单独存储时间并让核心数据处理事情会有更好的性能,对吗?我对编码还是相当陌生。。。那么,“非规范化”是指单独存储时间?哈哈:P还有,如果我已经有了一个Person
s数组(而不是通过核心数据获取实体)?你应该能够遍历Person数组来找到符合条件的人。您可以使用indexesOfObjectsPassingTest:
来进行此操作。好的,谢谢。最后一个问题。。。一般来说,单独存储时间并让核心数据处理事情会更好,对吗?谢谢,这就是我的想法。我可能最终还是决定分别存储日期和时间,但我认为这是一个更好的答案。再次感谢。谢谢,这就是我的想法。我可能最终还是决定分别存储日期和时间,但我认为这是一个更好的答案。再次感谢。