首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用NSFetchRequest

如何使用NSFetchRequest
EN

Stack Overflow用户
提问于 2013-06-04 16:34:15
回答 1查看 92关注 0票数 0

我正在构建一个核心数据应用程序,需要根据对象的日期获取对象。如果这些对象的日期与用户可以更改且可能经常更改的全局"selectedDate“在同一天,则这些对象将显示在UITableView中。代码如下:

代码语言:javascript
复制
-(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];
}

我的问题是哪种方法更有效:

每次用户更改所选日期时执行fetch请求,并使用谓词仅获取日期与selectedDate相同的对象

在启动时获取所有managedObjects,将它们存储在一个数组中,然后在每次用户更改所选日期时对该数组进行排序,从而创建一个仅包含正确对象的新数组

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-04 16:43:33

选项1,谓词fetch on demand。这将(可能)花费更长的时间来处理,但是,随着应用程序的增长和对象数量的增长,按需获取方法的伸缩性会更好,并且不会导致应用程序崩溃(内存不足)。

考虑使用NSFetchedResultsController并设置NSFetchRequestfetchBatchSize

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16913175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档