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

它看起来应该像这样:

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

最佳答案

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

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)!
   }
}


编辑

澄清问题后,您似乎需要一个month属性。将Int属性添加到您的实体,只要您更改日期(覆盖didSet),该属性就会自动用月份填写。这是从日期开始的月份:

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

关于ios - 按日期获取核心数据中的条目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40960026/

10-11 22:55
查看更多