按核心数据中的日期组件获取条目

Posted

技术标签:

【中文标题】按核心数据中的日期组件获取条目【英文标题】:get entries by date component in core data 【发布时间】:2016-12-04 15:10:22 【问题描述】:

我想按月份=12 等单个日期组件过滤数据库中的条目。请注意,我无法查询日期介于固定日期之间的条目,因为年份可能不同。

它应该看起来/像这样工作:

let request = NSPredicate(format: "date.month=%i", 12)

【问题讨论】:

【参考方案1】:

您必须为谓词使用时间间隔。

NSPredicate(format: "date >= %@ && date < %@", aDate, aDate.date(byAddingMonths:1))

请注意,您可能在问题中将NSFetchRequestNSPredicate 混淆了。

添加一个月:

extension Date 
   func date(byAddingMonths months: Int) -> Date 
       var diff = DateComponents()
       diff.month = months
       return Calendar.current.date(byAdding: diff, to: self)!
   

编辑

澄清问题后,您似乎需要一个月份属性。向您的实体添加一个Int 属性,该属性应在您更改日期时自动填写月份(覆盖didSet)。以下是从日期获取月份的方法:

let month = Calendar.current.component(.month, from:theDate)

【讨论】:

编辑了我的问题。据我了解,您的方法是指一年中某个月的特定日期范围。正确的?无论年份如何,我都需要找到每个条目,比如 month=11。 @matteok 没有真正好的方法可以做到这一点,因为Date 不包括月份信息。对于不同年份的日期,您必须重复使用此答案。

以上是关于按核心数据中的日期组件获取条目的主要内容,如果未能解决你的问题,请参考以下文章

从按格式化日期排序的核心数据中获取

核心数据聊天应用获取一批按日期排序的消息

如何从按对象创建日期排序的核心数据中获取结果?

NSFRC 核心数据获取最后的记录

在 hive/impala sql 中按日期获取数据,

按日期获取表的所有先前记录 MySQL