我有一個相當大的一組具有日期屬性的核心數據實體。我正在從實體創建報告,並需要查找報告日期範圍。報告中有~1000條記錄。iPhone如何高效地獲取具有NSDate屬性的第一個和最後一個核心數據實體?
我正在考慮從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];
您使用NSFetchedResultsController的方法可能是解決方案。使用特定的NSPredicate,NSSortDescription創建NSFetchedResultsController,並使用[yourFetchController objectAtIndexPath:]只訪問第一個最後一個對象: – CarlJ 2012-07-24 15:20:41
可能的重複:http://stackoverflow.com/questions/4789033/querying-max-min-and-other-via -core數據 – 2012-07-24 15:27:25