0
我正在构建一个核心数据应用程序,并需要基于它们的日期来获取对象。如果这些对象的日期与全局“selectedDate”同日,则这些对象将显示在UITableView中,用户可以更改并可能会经常这样做。造成这种情况的代码如下:如何使用NSFetchRequest
-(NSDate *)dateByMovingToEndOfDay:(NSDate *)date {
unsigned int flags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents* parts = [[NSCalendar currentCalendar] components:flags fromDate:date];
[parts setHour:23];
[parts setMinute:59];
[parts setSecond:59];
return [[NSCalendar currentCalendar] dateFromComponents:parts];
}
-(NSDate *)dateByMovingToBeginningOfDay:(NSDate *)date {
unsigned int flags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents* parts = [[NSCalendar currentCalendar] components:flags fromDate:date];
[parts setHour:0];
[parts setMinute:0];
[parts setSecond:0];
return [[NSCalendar currentCalendar] dateFromComponents:parts];
}
我的问题是哪种方法会更有效:
执行一个每次提取请求用户更改选择的日期和使用谓词只得到它的对象最新的是在同一天selectedDate
或者
抓取在启动时所有managedObjects,每次用户更改所选的日期时间排序将它们存储在一个数组,然后通过数组,创建一个新的仅包含正确对象的阵列