iphone - NSArray de NSSet: ¿Tengo que ordenarlo yo mismo?
sorting (2)
Tengo datos en un NSSet, y necesito ingresarlos en un NSArray.
¿Debo ordenarlo yo mismo (de nuevo, esto proviene de Core Data) o puedo obtenerlo en un orden ordenado?
Tienes que ordenarlo tú mismo, pero no es muy difícil ...
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];
Puede especificar un orden cuando recupera datos con un NSFetchRequest
estableciendo la propiedad sortDescriptors
en una matriz de NSSortDescriptor
s. Pero si ya lo tiene en un NSSet
y no desea realizar otra solicitud de recuperación, puede usar:
[[theSet allObjects] sortedArrayUsingDescriptors:sortDescriptors];
allObjects
un NSArray
provisional cuando llame a todos los allObjects
y luego a otro conjunto ordenado, para que no sea 100% eficiente, pero la sobrecarga debe ser insignificante para conjuntos de datos de tamaño razonable (y ciertamente menor que el costo de clasificación).
Editar
En realidad, me equivoqué: NSSet también tiene el método sortedArrayUsingDescriptors:
. Entonces puede llamar a [theSet sortedArrayUsingDescriptors:descriptors]
y hacerlo todo de una vez.