J'ai des données dans un NSSet et je dois les obtenir dans un NSArray.
Dois-je le trier moi-même (encore une fois, cela vient de Core Data) ou puis-je le sortir dans un ordre trié?
J'ai des données dans un NSSet et je dois les obtenir dans un NSArray.
Dois-je le trier moi-même (encore une fois, cela vient de Core Data) ou puis-je le sortir dans un ordre trié?
Vous pouvez spécifier un tri lorsque vous récupérez des données avec un NSFetchRequest
par réglage de l' sortDescriptors
de la propriété à un tableau d' NSSortDescriptor
s. Mais si vous l'avez déjà dans un NSSet
et ne veux pas faire une autre demande de récupération, vous pouvez utiliser:
[[theSet allObjects] sortedArrayUsingDescriptors:sortDescriptors];
Il va créer un intérimaire NSArray
lorsque vous appelez allObjects
, puis un autre tableau trié par la suite, il n'est donc pas efficace à 100%, mais les frais généraux doivent être négligeable pour la taille raisonnable des ensembles de données (et certainement moins que le coût de tri).
En fait, j'ai eu tort - NSSet a l' sortedArrayUsingDescriptors:
méthode de trop. Ainsi, vous pouvez simplement appeler [theSet sortedArrayUsingDescriptors:descriptors]
de tout faire en une seule fois.
Vous devez trier vous-même, mais ce n'est pas très difficile ...
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];
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.