0
J'ai obtenu cette application qui doit être mise à jour avec une nouvelle base de données.removeitematpath pour supprimer Olddb.sqlite
Je veux supprimer l'ancien et le remplacer par le nouveau.
Voici le code que je utilise:
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
if (persistentStoreCoordinator != nil) {
return persistentStoreCoordinator;
}
NSString *storePath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"Newdb.sqlite"];
NSFileManager *fileManager = [NSFileManager defaultManager];
// If the expected store doesn't exist, copy the default store.
if (![fileManager fileExistsAtPath:storePath]) {
NSString *defaultStorePath = [[NSBundle mainBundle] pathForResource:@"Newdb" ofType:@"sqlite"];
if (defaultStorePath) {
[fileManager copyItemAtPath:defaultStorePath toPath:storePath error:NULL];
}
}
NSURL *storeUrl = [NSURL fileURLWithPath:storePath];
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: [self managedObjectModel]];
NSError *error;
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
exit(-1); // Fail
}
return persistentStoreCoordinator;
}
Je veux que mon application pour vérifier au démarrage si le Olddb.sqlite est là et si oui, supprimez-le!
Ceci est incorrect. Cela vérifie pour voir si le NSString pathInDocuments n'est pas nul et supprime le fichier basé sur cela plutôt que de vérifier si le fichier réel existe en utilisant [fileManagers fileExistsAtPath: pathInDocuments] – Zigglzworth
bien cela fonctionne pour moi ... – treasure