5

嗨,我将在 appstore 中更新我的 iOS 应用程序,此更新包含数据库更改,那么现在如何通过删除应用程序更新时现有版本的旧数据库来迁移我现有的核心数据?我参考了核心数据迁移教程

核心数据迁移帖

可惜没用。提前感谢任何帮助

4

2 回答 2

10

史密斯,
我假设您已经在 xcdatamodel 中进行了一些架构更改
,如果您已经将应用程序提交到 App Store正在使用较早的模型版本。
然后,
从核心数据选项卡中添加一个新文件,作为映射模型
选择,源模型(提交的应用程序正在使用的
模型版本)目标模型(您已完成更改的模型版本)

您就完成了!

于 2013-09-24T09:30:19.963 回答
2

在应用自动迁移之前,您是否可能没有创建新版本的数据库模型?

  1. 从项目资源管理器中选择 [dbname].xcdatamodeld。
  2. 选择编辑器->添加模型版本。
  3. 选择基于您当前的模型。
  4. 确保你有这样的自动迁移选项:

    -(NSPersistentStoreCoordinator *)storeCoordinator {
    
    if (storeCoordinator_ != nil) {
        return storeCoordinator_;
    }
    
    NSURL *storeURL = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"[dbname].sqlite"]];
    
    NSDictionary* storeOptions = @{NSMigratePersistentStoresAutomaticallyOption : [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption : [NSNumber numberWithBool:YES]}; 
    
    NSError *error = nil;
    storeCoordinator_ = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self objectModel]];
    
    if (![storeCoordinator_ addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:storeOptions error:&error]) {
    
        // handle error here and remove abort
    
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        abort();
    }
    
    return storeCoordinator_;
    }
    
  5. 你走了。

于 2013-09-04T17:45:30.117 回答