Frage

Gibt es eine Möglichkeit, alle Datensätze von einem zu löschen? NSManagedObjectContext?

Ich verwende den folgenden Code, um Daten einzufügen:

NSManagedObjectContext * context = [[NSApp delegate] managedObjectContext];
NSManagedObject        * basket  = nil;

basket = [NSEntityDescription insertNewObjectForEntityForName:@"ShoppingBasket"
                                       inManagedObjectContext: context];  
[basket setValue:[firstSelectedObject valueForKey:@"accessoryID"]
          forKey: @"accessoryID"];

Wie lösche ich alle Datensätze? Ich möchte etwas, das wie die Funktion "entfernen:" ist, aber alles entfernen.

War es hilfreich?

Lösung

Um alle Instanzen einer bestimmten Entität zu löschen (wir werden Ihr Einkaufskorb verwenden), können Sie einfach alle Körbe holen und sie dann löschen. Es sind nur ein paar Codezeilen:

NSManagedObjectContext * context = [self managedObjectContext];
NSFetchRequest * fetch = [[[NSFetchRequest alloc] init] autorelease];
[fetch setEntity:[NSEntityDescription entityForName:@"ShoppingBasket" inManagedObjectContext:context]];
NSArray * result = [context executeFetchRequest:fetch error:nil];
for (id basket in result)
    [context deleteObject:basket];

Die Alternative in einer nicht-dokumentbasierten App besteht darin, Ihre Verbindung zum Datenspeicher zu schalten, die tatsächliche Datei zu löschen und dann wieder zu verbinden (der Vorlagencode, der mit einem Standard-Kerndatenprojekt geliefert wird, erstellt die Datei automatisch, wenn sie nicht vorhanden ist). Sie haben dann ein brandneues, leeres Geschäft.

Beachten Sie, dass das Codebeispiel einen möglichen Fehler ignoriert. Tu das nicht. :-)

Andere Tipps

Ein viel schnellerer Weg wäre, das Geschäft ganz zu entfernen. Auf diese Weise verschwenden Sie keine Zeit, um Objekte zu holen oder sie zu durchzusetzen, wie es die andere Antwort tut.

NSError *error;
NSURL *applicationDocumentsDirectory = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
NSURL *storeURL = [applicationDocumentsDirectory URLByAppendingPathComponent:@"MyCDStore.sqlite"];
[[NSFileManager defaultManager] removeItemAtPath:storeURL.path error:&error];

Vergessen Sie nicht, es neu zu erstellen, nachdem Sie es gelöscht haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top