使用更新的核心数据模型更新iOS应用

And*_*ers 20 core-data objective-c ios

我几乎完成了我的第一个iOS应用程序的1.1版本,其中我对我的核心数据模型做了两处小改动.更具体地说,我在我的一个表中添加了两个属性.这是我的第一个核心数据应用程序,因此我对实时应用程序进行了第一次核心数据更新,而且我对运送可能对我当前用户无效的代码感到有些不安.由于这是一个小更新,我猜测苹果自动迁移方法会做,但我不想猜.

相关代码如下所示:

NSError *error = nil;
__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
                        [NSNumber numberWithBool:YES],   NSMigratePersistentStoresAutomaticallyOption,
                        [NSNumber numberWithBool:YES],  NSInferMappingModelAutomaticallyOption, nil];
if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error])
{

    //NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
    abort();
}    
Run Code Online (Sandbox Code Playgroud)

在1.1中我添加了NSDictionary *options.

在我的视图控制器中,我确保所需的行不是这样的:

if (currentPage.inputType == @"drawing") {
    [pageView changeToDrawing];
} else if (currentPage.inputType == @"text") {
    [pageView changeToText];
} else {
    currentPage.inputType = @"text";
    [pageView changeToDrawing];
}
Run Code Online (Sandbox Code Playgroud)

基本上,这些变化是否足够,还是我必须做其他事情?

Jer*_*emy 24

这是一篇关于核心数据版本控制的非常有用的文章,可以回答您的问题.

总而言之,您需要为项目添加新的模型版本.这对于迁移过程是必要的.

编辑

上面的链接已更改,并将您重定向到以下链接:核心数据模型版本控制和数据迁移

如果一切都失败了,谷歌:核心数据模型版本控制和数据迁移苹果开发人员.

  • 顺便说一句,快速提示:您最好测试迁移过程.从应用商店安装版本,然后在其上运行最新的(您的项目).这将是一个真正的测试,以检查它是否正常工作. (10认同)
  • 绝对你应该从1.0中删除它们并添加到下一个版本.最近我真的对此感到厌烦.1.0应该*与当前部署的*完全相同*否则您将获得异常.这包括属性和关系. (2认同)