UIManagedDocument迁移数据模型

时间:2011-12-29 11:11:55

标签: core-data migration icloud uimanageddocument

我正在使用一个使用UIManagedDocument子类的iPhone应用程序,并将其文档存储在iCloud上。

在我更改核心数据模型/方案(添加新的模型版本 - 就像过去几周我曾多次)之前,一切正常。 我添加了一个新属性并更改了其中一个现有属性的数据类型。

现在,当我运行我的应用时,我似乎无法使用UIManagedDocument的{​​{1}}加载我的文档。 我可以创建新文档并读/写。 如果我将数据模型版本改回1,那么我可以阅读现有文档,但不能阅读新文档。

根据我的理解,我只对数据模型进行轻量级迁移,-openWithCompletionHandler:应该处理这个权限吗?

非常感谢任何建议!

2 个答案:

答案 0 :(得分:7)

以下是基于我的理解:

注意 - 我没有尝试过iCloud,但是我已经测试了非icloud并且看起来没问题。

UIManagedDocument自行配置managedObjectModel和持久存储协调员

当需要完成迁移时,只需设置UIManagedDocument的{​​{1}}

即可
persistentStoreOptions

<强>参见:

答案 1 :(得分:2)

在UIManagedDocument的子类中,您可能希望尝试覆盖managedObjectModel,如下所示:

- (NSManagedObjectModel *)managedObjectModel
{
    NSString *path = [[NSBundle mainBundle] pathForResource:@"<ModelNameHere>" ofType:@"momd"];
    NSURL *momURL = [NSURL fileURLWithPath:path];
    NSManagedObjectModel *managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:momURL];

    return managedObjectModel;
}