Swift 从最近七天的核心数据中提取实体

Swift 从最近七天的核心数据中提取实体,swift,core-data,nsdate,nspredicate,Swift,Core Data,Nsdate,Nspredicate,我目前正在使用核心数据来存储膳食。我的实体是日期(date)、食物(string)和饮料(string)。现在我想提取过去七天储存的所有食物。我该怎么做?我知道我应该用NSPredicate,但我不知道具体怎么用 获取当前日历 let calendar = NSCalendar.currentCalendar() 获取当前日期 let now = NSDate() let sevenDaysAgo = calendar.dateByAddingUnit(.Day, value: -7, to

我目前正在使用核心数据来存储膳食。我的实体是日期(date)、食物(string)和饮料(string)。现在我想提取过去七天储存的所有食物。我该怎么做?我知道我应该用NSPredicate,但我不知道具体怎么用

获取当前日历

let calendar = NSCalendar.currentCalendar()
获取当前日期

let now = NSDate()
let sevenDaysAgo = calendar.dateByAddingUnit(.Day, value: -7, toDate: now, options: [])!
从当前日期减去7天

let now = NSDate()
let sevenDaysAgo = calendar.dateByAddingUnit(.Day, value: -7, toDate: now, options: [])!
7天前开始新的一天

let startDate = calendar.startOfDayForDate(sevenDaysAgo)
创建谓词,literal
date
是核心数据属性

let predicate = NSPredicate(format:"(date >= %@) AND (date < %@)", startDate, now)
let predicate=NSPredicate(格式:“(日期>=%@)和(日期<%@)”,起始日期,现在)

非常感谢!但是我怎么能一次抽出一天(但仍然是全部七天)?我之所以要这样做,是因为当每天有多个存储值时,我想取天数的平均值。或者可能有更好的方法来实现这一点?使用此谓词执行获取请求将返回与条件匹配的所有对象的数组。添加排序描述符以获取排序数组。然后枚举数组。或者每天使用一个fetch请求。也就是说,在过去的两天内,如果是一天,则减去一,并将值保留在一个变量中。然后在循环中,将变量作为
结束日期
,再减去一,将其保存在变量中,并将新值作为
开始日期