我保存了实体并为其提供了一个名为“date”的属性。我的目标是获取特定天数的对象。由于日期(NSDate)对象是特定的时刻,我被迫为我想要获取的每一天创建“日期范围”。
我如何有效地解决这个问题?我应该为N天创建N个谓词还是用“AND”子句创建一个大谓词?是否有巧妙的方法来实现这一共同目标?
答案 0 :(得分:1)
如果您需要多次复制数据(所有事件),则不应在每次请求时获取它们,更好地过滤它们。
例如:
var allEvents = [Events]()
...
let fetchRequest = NSFetchRequest(entityName: "events")
allEvents = try context.executeFetchRequest(fetchRequest) as! [Event]
然后,当你需要它们时
<强> 1。特定日期
let calender = NSCalendar.currentCalendar()
eventsForSelectedDay = events.filter( { return calender.isDate($0.yourDateProperty, inSameDayAsDate: self.currentSelectedDate) == true } )
<强> 2。对于日期范围
eventsForSelectedDays = events.filter( { return $0.yourDateProperty >= dateFrom && $0.yourDateProperty < dateTo } )