我有一个带有 NSDate
属性的Core Data模型 . 我想白天过滤数据库 . 我假设解决方案将涉及 NSPredicate
,但我不确定如何将它们放在一起 .
我知道如何使用 NSDateComponents
和 NSCalendar
比较两个 NSDate
的日期,但如何使用 NSPredicate
过滤它?
也许我需要在我的 NSManagedObject
子类上创建一个类别,它可以返回仅有年,月和日的裸日期 . 然后我可以在 NSPredicate
中进行比较 . 这是你的推荐,还是有更简单的东西?
8 回答
给定NSDate * startDate和endDate以及NSManagedObjectContext * moc:
有关如何将startDate和endDate设置为上述给定答案的示例:
在这里,我在一个月内搜索所有条目 . 值得一提的是,这个例子还展示了如何搜索'nil'date-entires .
在Swift中我得到了类似的东西:
我很难发现字符串插值
"\(this notation)"
不能用于比较NSPredicate中的日期 .我将Glauco Neves的答案移植到Swift 2.0并将其包装在一个接收日期的函数中,并在相应的日期返回
NSPredicate
:日期的Swift 3.0扩展:
然后使用像:
添加到Rafael的答案(非常有用,谢谢!),移植到Swift 3 .
我最近花了一些时间尝试解决同样的问题,并将以下内容添加到备选列表中以准备开始和结束日期(包括iOS 8及更高版本的更新方法)......
...和核心数据的
NSPredicate
NSFetchRequest
(如上面其他答案所示)......对我来说,这是有效的 .
我已经过滤了从当前日期到7天的数组 . 我的意思是我从当前日期获得一周的数据 . 这应该工作 .
注意:我将以毫秒为单位的日期转换为1000,并在之后进行比较 . 如果您需要任何清晰度,请告诉我 .