Prioridades de NSSortDescriptor
Frecuentes
Visto 533 veces
0
Uso NSSortDescriptor para ordenar los contactos con firstName, pero si el primer nombre es nulo, la clasificación será incorrecta.
si tengo:
contacto 1: Nombre = BAAAA y Apellido = XXXXXX
contacto 2: Nombre = nil y Apellido = AAAAAA
el tipo será así.
1- AAAAAAA
2- BAAAAA XXXXXX
entonces necesito saber si existe una solución para establecer prioridades entre Firstname y LastName.
if Firstname ==nil
así que toma Apellido
Muchas Gracias
2 Respuestas
1
NSSortDescriptor *descriptor1 = [[NSSortDescriptor alloc] initWithKey:@"lastName" ascending:YES];
NSSortDescriptor *descriptor2 = [[NSSortDescriptor alloc] initWithKey:@"firstName" ascending:YES];
NSArray *sorted = [contatcs sortedArrayUsingDescriptors:@[descriptor1, descriptor2]];
el orden de los descriptores en la matriz determina la prioridad. Para una consulta de datos básicos, sería algo así como
NSManagedObjectContext *moc = [self managedObjectContext];
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Contact" inManagedObjectContext:moc];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entityDescription];
[request setSortDescriptors:@[descriptor1, descriptor2]];
NSError *error;
NSArray *array = [moc executeFetchRequest:request error:&error];
if (array == nil)
{
// Deal with error...
}
respondido 15 nov., 13:08
0
Puedes subclasificar NSSortDescriptor
y anular el compareObject:toObject:
método:
- (NSComparisonResult)compareObject:(id)object1 toObject:(id)object2 {
NSString *firstName1 = [object1 valueForKey:@"firstName"];
NSString *lastName1 = [object1 valueForKey:@"lastName"];
NSString *firstName2 = [object2 valueForKey:@"firstName"];
NSString *lastName2 = [object2 valueForKey:@"lastName"];
if(firstName1 == nil || firstName2 == nil) {
return [lastName1 compare:lastName2];
}
return [firstName1 compare:firstName2];
}
respondido 15 nov., 13:08
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas iphone core-data nssortdescriptor or haz tu propia pregunta.
Gracias por la respuesta. Pero, ¿cómo puedo hacerlo si quiero crear una solicitud de recuperación (datos básicos) con NSSortDescriptors? Esta es una ordenación de matriz, no una solicitud de recuperación. - Bastardo