Potrzebuję usunąć mój magazyn trwały (wykonanie obiektu według obiektu jest niepraktyczne, ponieważ mam ponad 100 000 obiektów). Próbowałem to:Jak usunąć główny magazyn danych trwałych
- (IBAction)resetDatabase:(id)sender {
NSPersistentStore* store = [[__persistentStoreCoordinator persistentStores] lastObject];
NSError *error = nil;
NSURL *storeURL = store.URL;
// release context and model
[__managedObjectContext release];
[__managedObjectModel release];
__managedObjectModel = nil;
__managedObjectContext = nil;
[__persistentStoreCoordinator removePersistentStore:store error:nil];
[__persistentStoreCoordinator release];
__persistentStoreCoordinator = nil;
[[NSFileManager defaultManager] removeItemAtPath:storeURL.path error:&error];
if (error) {
NSLog(@"filemanager error %@", error);
}
// recreate the stack
__managedObjectContext = [self managedObjectContext];
}
Ale ten błąd, gdy próbuję wstawić podmioty do sklepu potem:
This NSPersistentStoreCoordinator has no persistent stores. It cannot perform a save operation.
Aktualizacja: Próbowałem zwolnieniu MOC i mama przed wyjęciem magazyn trwały, ale nadal mam ten sam błąd.
Wow, myślę, że problemem był "removePersistentStore". Bez tej linii zadziałało ... Jestem ciekawy, dlaczego. – David
Mam wrażenie, że samo usunięcie pliku .sqlite pozostawi wiele śmieci podczas używania podstawowych atrybutów danych, które zezwalają na "Zezwalanie na pamięć zewnętrzną". – magma
Magma ma rację, jeśli użyjesz iCloud jest używany itp. Problemy będą miały miejsce. –