0
我想通過單個日期組件(如month = 12)從我的數據庫中篩選條目。請注意,我無法查詢日期介於固定日期的條目,因爲年份可能有所不同。按核心數據中的日期組件獲取條目
它看起來/工作是這樣的:
let request = NSPredicate(format: "date.month=%i", 12)
我想通過單個日期組件(如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)!
}
}
編輯
澄清的問題後,它將顯示你需要一個月的屬性。爲您的實體添加一個Int
屬性,每當您更改日期時應自動填寫該月份(覆蓋didSet
)。以下是你如何從日期得到的月份:
let month = Calendar.current.component(.month, from:theDate)
編輯我的問題。據我所知,你的方法是指一年中單月的特定日期範圍。正確?無論年份如何,我都需要找到每個條目可以說月= 11。 – matteok
@matteok沒有真正的好辦法做到這一點,因爲「日期」不包括月份信息。你不得不在不同年份的日期重複使用這個答案。 –