iphone sorting nsarray nsset

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.