2016-12-04 80 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没有真正的好办法做到这一点,因为“日期”不包括月份信息。你不得不在不同年份的日期重复使用这个答案。 –