2010-08-30 4 views
0

Я получил это приложение, которое необходимо обновить с новой базой данных.removeitematpath удалить Olddb.sqlite

Я хочу удалить старый и заменить его новым.

Это код, я использую:

- (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; 
} 

Я хочу, чтобы мое приложение, чтобы проверить при запуске, если Olddb.sqlite есть, и если да, удалите его!

ответ

1

вот решение ...

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

Это неправильно. Это проверяет, не является ли NSString pathInDocuments не нулем и удаляет файл на основе этого, а не проверяет, существует ли фактический файл, используя [fileManager fileExistsAtPath: pathInDocuments] – Zigglzworth

+0

хорошо работает для меня ... – treasure

Смежные вопросы