32

NSSetにデータがあり、NSArrayにデータを取り込む必要があります。

自分で並べ替える必要がありますか(これもCore Dataからのものです)、並べ替えた順序で取得できますか?

4

2 に答える 2

77

プロパティをsの配列にNSFetchRequest設定することにより、でデータを取得するときに並べ替えを指定できます。ただし、すでにそれを持っていて、別のフェッチ要求を行いたくない場合は、次を使用できます。sortDescriptorsNSSortDescriptorNSSet

[[theSet allObjects] sortedArrayUsingDescriptors:sortDescriptors];

NSArray呼び出し時に暫定的に作成し、後でallObjects別の並べ替えられた配列を作成するため、100%効率的ではありませんが、適度なサイズのデータ​​セットのオーバーヘッドはごくわずかです(そして確かに並べ替えのコストよりも少ないはずです)。

編集

実際、私は間違っていました-NSSetにもsortedArrayUsingDescriptors:メソッドがあります。だから、あなたはただ電話[theSet sortedArrayUsingDescriptors:descriptors]して、一度にそれをすべて行うことができます。

于 2010-04-20T04:57:36.613 に答える
8

自分で並べ替える必要がありますが、それほど難しくはありません...

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];
于 2010-04-20T04:58:08.973 に答える