سؤال

حصلت على هذا التطبيق الذي يجب تحديثه باستخدام قاعدة بيانات جديدة.

أريد إزالة القديم واستبداله بالذات الجديدة.

هذا هو الرمز الذي أستخدمه:

 - (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 موجودًا وإذا كان الإجابة بنعم ، فاحذفه!

هل كانت مفيدة؟

المحلول

هذا هو الحل ...

NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *docsDir = [documentPaths objectAtIndex:0];
    NSString *pathInDocuments = [docsDir stringByAppendingPathComponent:@"Olddb.sqlite"];
if (pathInDocuments) {
    [fileManager removeItemAtPath:pathInDocuments error:NULL];
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top