NSSetにデータがあり、それをNSArrayに取得する必要があります。
自分でソートする必要がありますか?
NSFetchRequest
プロパティをsortDescriptors
sの配列に設定することにより、NSSortDescriptor
でデータを取得するときにソートを指定できます。ただし、すでにNSSet
にあり、別のフェッチリクエストを行いたくない場合は、次のコマンドを使用できます。
[[theSet allObjects] sortedArrayUsingDescriptors:sortDescriptors];
NSArray
を呼び出したときに暫定的なallObjects
が作成され、その後、別の並べ替えられた配列が作成されるため、100%効率的ではありませんが、適度なサイズのデータセットのオーバーヘッドは無視できます(もちろんソートのコストよりも少ない)。
実際、私は間違っていました-NSSetにはsortedArrayUsingDescriptors:
メソッドも。したがって、[theSet sortedArrayUsingDescriptors:descriptors]
そして、すべてを一度に実行します。
自分で分類する必要がありますが、それほど難しくはありません...
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Sprocket" inManagedObjectContext:managedObjectContext];
[request setEntity:entity];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"sortVariable" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[request setSortDescriptors:sortDescriptors];
NSError *error;
NSMutableArray *mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
self.sprocketArray = mutableFetchResults;
[sortDescriptors release];
[sortDescriptor release];
[mutableFetchResults release];
[request release];