13.03.2011
Auslesen mit NSFetchRequest
Ausgehend von dem Tutorial Simple Core Data Command Line Importer werden nun alle Core Data Datensätze ausgelesen und auf der Konsole ausgegeben. Zum Auslesen wird ein NSFetchRequest
verwendet.
Das verwendete Datenmodell sieht folgendermaßen aus:
Die folgende Abbildung zeigt, daß mittels eines NSFetchRequest
die drei Datensätze aus der Persistenzschicht ausgelesen und anschließend auf der Konsole ausgegeben werden sollen.
In der Datei main.m
wird die Methode searchAndPrint
ergänzt:
void searchAndPrint() {
NSManagedObjectContext *context = managedObjectContext();
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Person" inManagedObjectContext:context]];
NSError *error = nil;
NSArray *persons = [context executeFetchRequest:request error:&error];
if(error) {
NSLog(@"Cannot execute NSFetchRequest: %@", [error localizedDescription]);
return ;
}
for(NSManagedObject *person in persons) {
NSLog(@"Person: firstname: %@ lastname: %@", [person valueForKey:@"personfirstname"],[person valueForKey:@"personname"]);
}
}
Um die Datensätze auszulesen wird ein NSFetchRequest
verwendet, der alle Einträge für das Entity Person
ausliest. Das Ergebnis ist ein NSArray
mit NSManagedObjects
. In der for
-Schleife unten werden die Attribute-Werte ausgelesen und auf der Konsole ausgegeben.
Das Ergebnis sieht dann in etwa so aus:
2011-03-06 08:48:18.906 SimpleCommandLineImporter[22579:a0f] Person: firstname: Bart lastname: Simpson
2011-03-06 08:48:18.906 SimpleCommandLineImporter[22579:a0f] Person: firstname: Jörn lastname: Hameister
2011-03-06 08:48:18.907 SimpleCommandLineImporter[22579:a0f] Person: firstname: Donald lastname: Duck
Wie die Daten wieder gelöscht werden können, wird in dem Artikel: Löschen von Core Data Einträgen erklärt.