我想按单个日期组件(例如月=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)!
}
}
编辑
澄清问题后,您似乎需要一个月份属性。向您的实体添加一个 Int
属性,每当您更改日期时,该属性都会自动填写月份(覆盖 didSet
)。以下是从日期获取月份的方法:
let month = Calendar.current.component(.month, from:theDate)
关于ios - 按核心数据中的日期组件获取条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40960026/