0

我有一组相当大的带有日期属性的核心数据实体。我正在从实体创建报告,需要找到报告日期范围。报告中有大约 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];
4

1 回答 1

1

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

下面的文档实际上有一个基于实体的最小日期属性获取的示例。

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

于 2012-07-24T15:36:50.480 回答