13.03.2011
Löschen von Core Data Einträgen
Ausgehend von dem Tutorial Simple Core Data Command Line Importer werden nun alle Core Data Datensätze ausgelesen und dann gelöscht. Zum Löschen wird die Methode deleteObject
des ManagedObjectContext
verwendet.
Das verwendete Datenmodell sieht folgendermaßen aus:
Die folgende Abbildung zeigt, daß mittels eines NSFetchRequest
die Personendaten ausgelesen und anschließend durch ein deleteObject
gelöscht werden.
In der Datei SimpleCommandLineImporter.m
wird die Methode searchAndDelete
ergänzt:
void searchAndDelete() {
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) {
//Delete the Person
[context deleteObject:person];
}
}
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 Personen dann mittels der Methode deleteObject
des ManagedContext gelöscht.