Ich habe zwei Entitäten die jeweils eine many-to-many-Relationships aufeinander haben, also
Warengruppen <<--->> Artikel
Ich möchte eine UITableView haben, die z.B. so aussieht:
Warengruppe 1
-> Artikel A
-> Artikel B
-> Artikel C
Warengruppe 2
-> Artikel A
-> Artikel D
-> Artikel F
Warengruppe 3
-> Artikel B
-> Artikel C
-> Artikel G
usw.
Bei einer 1:n-Beziehung (also Warengruppen <--->> Artikel), würde der folgende FetchRequest funktionieren.
Alles anzeigen
Das Ergebnis sähe dann z.B. so aus:
Warengruppe 1
-> Artikel A
-> Artikel B
Warengruppe 2
-> Artikel C
-> Artikel D
usw.
Bei der n:m-Beziehung gibt es natürlich eine Exception: "Invalid to many relationship in setPropertiesToFetch" - was auch klar ist, da für eine Section in diesem Fall ein NSSet geliefert wird.
Ich könnte natürlich einen Request über die Warengruppen machen und dann die einzelnen Artikel jeweils herausfiltern usw.
Ich frage mich aber, ob es nicht eine Möglichkeit gibt, das direkt in dem NSFetchResultsController komplett anzufackeln (über ein Predicate?)?
Was ich im Netz dazu gefunden habe, hat mich bislang nicht weiter gebracht. Ist es also möglich und wenn ja wie?
Warengruppen <<--->> Artikel
Ich möchte eine UITableView haben, die z.B. so aussieht:
Warengruppe 1
-> Artikel A
-> Artikel B
-> Artikel C
Warengruppe 2
-> Artikel A
-> Artikel D
-> Artikel F
Warengruppe 3
-> Artikel B
-> Artikel C
-> Artikel G
usw.
Bei einer 1:n-Beziehung (also Warengruppen <--->> Artikel), würde der folgende FetchRequest funktionieren.
Quellcode
- NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
- NSEntityDescription *entity = [NSEntityDescription entityForName:@"Artikel" inManagedObjectContext:self.managedObjectContext];
- [fetchRequest setEntity:entity];
- [fetchRequest setFetchBatchSize:20];
- NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"artikelInGruppe.name" ascending:YES];
- NSSortDescriptor *sortDescriptor2 = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
- NSArray *sortDescriptors = [NSArray arrayWithObjects:sortDescriptor, sortDescriptor2, nil];
- [fetchRequest setSortDescriptors:sortDescriptors];
- NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"artikelInGruppe.name" cacheName:@"Master"];
- aFetchedResultsController.delegate = self;
- self.fetchedResultsController = aFetchedResultsController;
- NSError *error = nil;
- if (![self.fetchedResultsController performFetch:&error]) {
- NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
- abort();
- }
- return __fetchedResultsController;
Das Ergebnis sähe dann z.B. so aus:
Warengruppe 1
-> Artikel A
-> Artikel B
Warengruppe 2
-> Artikel C
-> Artikel D
usw.
Bei der n:m-Beziehung gibt es natürlich eine Exception: "Invalid to many relationship in setPropertiesToFetch" - was auch klar ist, da für eine Section in diesem Fall ein NSSet geliefert wird.
Ich könnte natürlich einen Request über die Warengruppen machen und dann die einzelnen Artikel jeweils herausfiltern usw.
Ich frage mich aber, ob es nicht eine Möglichkeit gibt, das direkt in dem NSFetchResultsController komplett anzufackeln (über ein Predicate?)?
Was ich im Netz dazu gefunden habe, hat mich bislang nicht weiter gebracht. Ist es also möglich und wenn ja wie?