相关疑难解决方法(0)

多版本升级的核心数据迁移

我有一个使用Core Data的iPhone应用程序.

我做了一个更新并使用轻量级迁移从我的MOM(管理对象模型)的V1到V2.这非常有效.

当我想要去我妈妈的V3(及以上)时会发生什么?

  • 如果我决定继续轻量级迁移,它会自动处理从我的MOM的V1到V3和V2迁移到V3,还是需要做一些额外的事情?
  • 如果我决定使用映射模型,会发生什么?如何处理将V1和V2 MOM升级到V3的问题?我是否需要为V1到V3和V2到V3创建映射模型?
  • 这个问题更进一步......当我拥有V6 MOM并且仍然需要支持从V1 MOM升级的可能性时会发生什么?

另一个问题是确定当前MOM版本的最佳方法是什么?我应该使用isConfiguration:compatibleWithStoreMetadata:

谢谢你的帮助.我很喜欢核心数据.但它有时让我头晕目眩,我感到困惑,这就是我寻求一些圣人智慧的原因.

migration iphone cocoa core-data mapping-model

25
推荐指数
2
解决办法
3822
查看次数

核心数据迁移来自多个版本

问题

  • 我有4个版本的核心数据模型(轻量级迁移)
  • 在版本5中,需要手动创建映射模型(将数据类型从nsnumber更改为nsstring)
  • 从v4迁移到v5可以正常使用映射模型,但对于具有不同版本(1 - 3)的用户,如何处理此迁移?

在非连续版本之间迁移并尝试使用那里提到的渐进式迁移时,我已经阅读了一些SO post Core Data Migration错误,但它在干净安装时失败,因为在progressivelyMigrateURL:

NSDictionary *sourceMetadata = 
  [NSPersistentStoreCoordinator metadataForPersistentStoreOfType:type
                                                             URL:sourceStoreURL
                                                           error:error];
  if (!sourceMetadata) return NO;
Run Code Online (Sandbox Code Playgroud)

并在 - (NSPersistentStoreCoordinator*)persistentStoreCoordinator;

if (![self progressivelyMigrateURL:url
                              ofType:NSXMLStoreType
                             toModel:mom
                               error:&error]) {
    [[NSApplication sharedApplication] presentError:error];
    return nil;
  }
  //END:progressivelyMigrateCall
  //START:persistentStoreCoordinator

  if (![persistentStoreCoordinator addPersistentStoreWithType:NSXMLStoreType
                                                configuration:nil
                                                          URL:url
                                                      options:nil
                                                        error:&error]) {...}
Run Code Online (Sandbox Code Playgroud)

这使得addPersistentStoreWithType:无法到达

我是否需要更改任何内容以使其工作?

不确定我是否需要完成所有这些工作,因为我已经阅读了一些评论,声明核心数据会自动完成所有这些工作,但还找不到任何文档.

core-data-migration ios

5
推荐指数
0
解决办法
800
查看次数