objective-c - iPhone如何有效地获取具有NSDate属性的第一个和最后一个Core Data实体?

标签 objective-c ios core-data nsdate nspredicate

我有一组相当大的带有日期属性的核心数据实体。我正在从实体创建报告,并且需要查找报告日期范围。报告中约有 1000 条记录。

我正在考虑从 NSFetchedResultsController 获取获取的对象数组,并使用日期排序描述符对数组进行排序。然后获取该数组的第一个和最后一个对象以确定日期范围。我似乎记得日期操作很昂贵,并且不确定以这种方式对数组进行排序,返回 1000 个元素的数组是否是一个好主意。

是否有其他一些核心数据或谓词技巧可以用来查询我的核心数据堆栈以查找具有最小或最大日期的对象?

这是我当前正在使用的代码,但我正在徘徊是否有更快、更高效的东西:

 NSSortDescriptor* sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"date" ascending:YES];
    NSArray* sortDescriptors = [NSArray arrayWithObject:sortDescriptor];

    NSArray* sortedDateArray = [NSMutableArray arrayWithArray:[fetchedResultsController.fetchedObjects sortedArrayUsingDescriptors:sortDescriptors]] ;       

    NSManagedObject* firstDateObject = [sortedDateArray objectAtIndex:0];  
    NSManagedObject* lastDateObject = [sortedDateArray lastObject];

最佳答案

无需使用 FetchedResultsController。只需使用一个简单的 FetchRequest,并利用聚合功能。

下面的文档实际上有一个根据实体的最小日期属性进行获取的示例。

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdFetching.html#//apple_ref/doc/uid/TP40002484-SW6

关于objective-c - iPhone如何有效地获取具有NSDate属性的第一个和最后一个Core Data实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11633991/

相关文章:

ios - 在真实设备中录制音频不起作用

ios - 从核心数据快速获取数据时应用程序崩溃

ios - 在 iOS 9 上更改隐藏属性时,UIStackView 不会设置动画

macos - 使用核心数据时的 EXC_BAD_ACCESS

ios - 在核心数据中添加相关实体会删除所有其他关系吗?

iphone - 匹配字符串格式

ios - 即使在滚动时也允许 UITableViewCell 更新内容

ios - 如何在 Firebase 中保存的数据下构建数据

iphone - 当我将新 View Controller 推送到 self.navigation Controller 时应用程序崩溃了

ios - 在两点 (x1,y1,z1) 到 (x2,y2,z2) 之间画线