我有一组相当大的带有日期属性的核心数据实体。我正在从实体创建报告,并且需要查找报告日期范围。报告中约有 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,并利用聚合功能。
下面的文档实际上有一个根据实体的最小日期属性进行获取的示例。
关于objective-c - iPhone如何有效地获取具有NSDate属性的第一个和最后一个Core Data实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11633991/