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 に答える