CoreData获取问题:获取具有特定日期数组的实体

时间:2017-01-15 08:01:36

标签: swift core-data nspredicate nsfetchrequest

我保存了实体并为其提供了一个名为“date”的属性。我的目标是获取特定天数的对象。由于日期(NSDate)对象是特定的时刻,我被迫为我想要获取的每一天创建“日期范围”。

我如何有效地解决这个问题?我应该为N天创建N个谓词还是用“AND”子句创建一个大谓词?是否有巧妙的方法来实现这一共同目标?

1 个答案:

答案 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 } )
相关问题