2010-11-28 17 views
0

Mein Kerndatenmodell hat eine Entität mit einem Attribut namens "part". Verschiedene Objekte dieser Entität können denselben Wert für "part" haben, was bedeutet, dass sie alle demselben "Teil" angehören. Ein NSFetchedResultsController kann nun Abschnitte basierend auf diesen Werten anzeigen und alles zusammennehmen, was zusammen gehört. Das funktioniert ohne Probleme, allerdings brauche ich jetzt die Werte für "part" für etwas anderes. Ich möchte nur die verschiedenen Werte für "part" abrufen und sie in einer tabellarischen Ansicht anzeigen, um sicherzustellen, dass dieselben Werte nicht zweimal angezeigt werden. Wie kann ich das machen?Spezielle Kerndaten holen

Ich würde etwas Hilfe schätzen, Fabian

Antwort

0

Okay, dachte, es selbst heraus. Grundsätzlich füllt ein Array partNames mit den Informationen aus meinem NSFetchedResultsController:

for (int i = 0; i < [[self.fetchedResultsController sections] count]; i++) { 
    id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:i]; 
    [partNames addObject:[sectionInfo name]]; 
} 
0

- (NSFetchedResultsController *)fetchedResultsController { 

if (fetchedResultsController_ != nil) { 
    return fetchedResultsController_; 

} 

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:self.managedObjectContext]; 
[fetchRequest setEntity:entity]; 
[fetchRequest setFetchBatchSize:20]; 



NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:NO]; 
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; 
[fetchRequest setSortDescriptors:sortDescriptors]; 

NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"name" cacheName:nil]; 
aFetchedResultsController.delegate = self; 
self.fetchedResultsController = aFetchedResultsController; 

[aFetchedResultsController release]; 
[fetchRequest release]; 
[sortDescriptor release]; 
[sortDescriptors release]; 

NSError *error = nil; 
if (![fetchedResultsController_ performFetch:&error]) { 
    NSLog(@"Unerwarteter Fehler %@, %@", error, [error userInfo]); 
    abort(); 
} 

return fetchedResultsController_; 

}

Dies wird Ihnen alle Personen mit sortiert nach Namen und Gruppen bu Namen , entfernt doppelte Werte.

----- Während Fetcgcontroller zu schaffen, haben die sectionNameKeyPath zu erwähnen * * -----------