Ich habe ein NSManagedObject für die Abschnitte im gruppierten UITableView. Dieses Objekt hat die Attribute "name" und "createdAt". Ich möchte "Name" in der Benutzeroberfläche für die Abschnitt Titel verwenden, aber nach "createdAt" sortiert. Gemäß der Dokumentation muss der erste sortDescriptor-Schlüssel auch der sectionNameKeyPath des NSFetchedResultsController sein.NSFetchedResultsController - andere Sortierreihenfolge als Abschnittsname
Ich schlug vor, zwei sortDescriptors zu verwenden, aber es funktioniert nicht. Die Abschnitte sind weiterhin nach Namen sortiert.
- (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;
}
Großartig! Es kann so einfach sein. Nein ich verstehe auch die Funktion von mehreren sortDescriptors. Derzeit ist der "Name" meiner Objekte eindeutig, daher ist diese Lösung kein Problem. Danke auch für den Code. – Sebastian
@Sebastian: Gern geschehen. –
Danke für die Antwort. – coreDeviOS