Tengo un NSManagedObject para las secciones en el UITableView agrupado. Este objeto tiene los atributos "nombre" y "creadoAt". Quiero usar "nombre" en la interfaz de usuario para los títulos de las secciones, pero ordenado por "createdAt". De acuerdo con la documentación, la primera clave sortDescriptor debe ser también la secciónNameKeyPath del NSFetchedResultsController.NSFetchedResultsController - orden de clasificación diferente al nombre de sección
Sugerí utilizar dos sortDescriptors, pero no funciona. Las secciones todavía están ordenadas por nombre.
- (NSFetchedResultsController *)fetchedResultsController {
if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Object" inManagedObjectContext:[CoreDataHelper instance].managedObjectContext];
[fetchRequest setEntity:entity];
NSSortDescriptor *sortName = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
NSSortDescriptor *sortDate = [[NSSortDescriptor alloc] initWithKey:@"createdAt" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObjects:sortName, sortDate, nil]];
[fetchRequest setFetchBatchSize:20];
NSFetchedResultsController *theFetchedResultsController =
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:[CoreDataHelper instance].managedObjectContext sectionNameKeyPath:@"name"
cacheName:@"Root"];
self.fetchedResultsController = theFetchedResultsController;
return _fetchedResultsController;
}
¡Estupendo! Puede ser tan fácil. No, también entiendo la función de múltiples sortDescriptors. Actualmente, el "nombre" de mis objetos es único, por lo que esta solución no es problema. Gracias también por el código. – Sebastian
@Sebastian: De nada. –
Gracias por la respuesta. – coreDeviOS