Necesito eliminar mi tienda persistente (hacerlo objeto por objeto no es práctico porque tengo más de 100.000 objetos). He intentado esto:Cómo eliminar una tienda persistente de datos centrales
- (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];
}
Pero consigo este error cuando intento insertar entidades en la tienda después:
This NSPersistentStoreCoordinator has no persistent stores. It cannot perform a save operation.
Actualización: He intentado liberar el MOC y MOM antes de retirar la tienda persistente, pero sigo teniendo el mismo error.
Wow, creo que el problema fue 'removePersistentStore'. Sin esa línea funcionó ... Tengo curiosidad de por qué sin embargo. – David
Tengo la sensación de que simplemente eliminar el archivo .sqlite dejará una gran cantidad de basura al usar atributos de datos centrales que "Permiten almacenamiento externo". – magma
magma tiene razón, si utiliza iCloud se utiliza, etc., los problemas sucederán. –