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

时间:2016-12-04 15:10:22

标签: ios swift date core-data nsfetchrequest

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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)