Ho un oggetto NSManagedObject per le sezioni nel UITableView raggruppato. Questo oggetto ha gli attributi "nome" e "createdAt". Voglio usare "nome" nell'interfaccia utente per i titoli delle sezioni, ma ordinati per "createdAt". Secondo la documentazione, la prima chiave sortDescriptor deve essere anche la sectionNameKeyPath di NSFetchedResultsController.NSFetchedResultsController - ordine diverso dal nome della sezione
Ho suggerito di utilizzare due sortDescriptors, ma non funziona. Le sezioni sono ancora ordinate per nome.
- (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;
}
Ottimo! Può essere così facile. No, capisco anche la funzione di più SortDescriptors. Attualmente il "nome" dei miei oggetti è unico, quindi questa soluzione non è un problema. Grazie anche per il codice. – Sebastian
@Sebastian: prego. –
Grazie per la risposta. – coreDeviOS