我想按单个日期组件(例如month = 12)从数据库中过滤条目。请注意,由于年份可能不同,因此我无法查询日期介于固定日期之间的条目。
它看起来应该像这样:
let request = NSPredicate(format: "date.month=%i", 12)
最佳答案
您将必须为谓词使用时间间隔。
NSPredicate(format: "date >= %@ && date < %@", aDate, aDate.date(byAddingMonths:1))
请注意,您可能在问题中将
NSFetchRequest
与NSPredicate
混淆了。要添加一个月:
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/