2010-08-30 7 views
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!

Répondre

1

est ici la solution ...

NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *docsDir = [documentPaths objectAtIndex:0]; 
    NSString *pathInDocuments = [docsDir stringByAppendingPathComponent:@"Olddb.sqlite"]; 
if (pathInDocuments) { 
    [fileManager removeItemAtPath:pathInDocuments error:NULL]; 
} 
+3

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

+0

bien cela fonctionne pour moi ... – treasure