Vous souhaitez trier par nom qui ont une relation un à un en utilisant NSSortDescriptor
dans NSFetchedResultsController
. Voici mon codeNSFetchedResultsController avec NSSortDescriptor un à un
NSFetchRequest <studentDetail *> *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:[studentDetail entityName]];
NSSortDescriptor *sortDescriptorForSchoolName = [NSSortDescriptor sortDescriptorWithKey:NSStringFromSelector(@selector(schoolName))
ascending:YES
selector:@selector(localizedCaseInsensitiveCompare:)];
NSSortDescriptor *sortDescriptorForSchool = [NSSortDescriptor sortDescriptorWithKey:NSStringFromSelector(@selector(school))
ascending:YES];
[fetchRequest setSortDescriptors:@[sortDescriptorForSchool, sortDescriptorForSchoolName]];
[fetchRequest setFetchBatchSize:4];
NSManagedObjectContext *mainContext = [[coreDataManager sharedManager] managedObjectContext];
NSFetchedResultsController *FRC = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:mainContext
sectionNameKeyPath:nil
cacheName:nil];
[FRC setDelegate: self];
NSError *fetchError = nil;
if (![FRC performFetch: &fetchError])
NSLog(@"fetch error: %@", fetchError);
[self setStudentDetailFetchedResultsController: FRC];
Format Exemple DB:
- école et étudiants sont le nom de l'entité.
- Relation scolaire avec l'élève un à plusieurs.
- Total 4 écoles. Chaque école a 4 élèves.
- Maintenant, je veux afficher toute la liste des étudiants avec le nom tri croissant.
Dans UITableView
Je montre des détails de l'élève. Il y a une option pour trier les élèves sont trier par entité school
. Dans ma FRC ont studentDetail
. Comment puis-je trier ces détails avec FRC?
De studentDetail
entité ont une relation à un avec school
.
Mise à jour
school entity
un à plusieurs
school1
relationship
->student1
->student2
->student3
->student4
school2
relationship
->student5
->student6
->student7
->student8
school3
relationship
->student9
->student10
->student11
->student12
school4
relationship
->student13
->student14
->student15
->student16
student entity
un à un
student1
relationship
->school1
student2
relationship
->school1
student3
relationship
->school1
student4
relationship
->school1
student5
relationship
->school2
student6
relationship
->school2
student7
relationship
->school2
student8
relationship
->school2
student9
relationship
->school3
student10
relationship
->school3
student11
relationship
->school3
student12
relationship
->school3
student13
relationship
->school4
student14
relationship
->school4
student15
relationship
->school4
student16
relationship
->school4
Got answer from grâce à @RunLoop. Mais ce besoin de changer peu que je veux.
Comme je l'ai mentionné dans mon code pour trier NSStringFromSelector(@selector(school))
comme, par exemple: [NSSortDescriptor sortDescriptorWithKey[NSString stringWithFormat:@"%K.%K", NSStringFromSelector(@selector(school)), NSStringFromSelector(@selector(schoolName))] ascending:YES]
Au lieu de [NSSortDescriptor sortDescriptorWithKey:@"school.schoolName" ascending:YES]
Si j'utilise ce genre de méthode, en fonction si je change un nom dans l'entité, il est avertissement de spectacle et statique school.schoolName
ne fait pas. Est-ce possible? J'ai essayé cette méthode avec NSPredicate
qui ne montre aucun avertissement. Comment devrais-je résoudre ceci?
Voulez-vous des valeurs DB ou un organigramme DB? – user3589771
@RunLoop Pouvez-vous vérifier maintenant? Question mise à jour Encore si quelque chose me manque, commentez ici. – user3589771