2016-12-04 72 views
0

我想通過單個日期組件(如month = 12)從我的數據庫中篩選條目。請注意,我無法查詢日期介於固定日期的條目,因爲年份可能有所不同。按核心數據中的日期組件獲取條目

它看起來/工作是這樣的:

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

回答

0

你將不得不使用的時間間隔作謂語。

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) 
+0

編輯我的問題。據我所知,你的方法是指一年中單月的特定日期範圍。正確?無論年份如何,我都需要找到每個條目可以說月= 11。 – matteok

+0

@matteok沒有真正的好辦法做到這一點,因爲「日期」不包括月份信息。你不得不在不同年份的日期重複使用這個答案。 –