【发布时间】:2014-11-19 17:26:03
【问题描述】:
我有我的核心数据数据库的版本 1。 (简化示例)
我对模型进行了一些更改,制作了 V2。这涉及创建一个具有 type 属性以及其他一些属性的新实体。 type 属性是到 plate 实体的链接。
我的应用程序的新版本发布并且数据迁移正常,因为这是轻量级的。由于当时我自己的原因,我当时没有建立关系。
稍后我决定对结构做一些更大的改变,创建新的实体 FixtureType 和 PlateTypeImage。然后我创建一些关系。这给了我模型的 V3。
由于这种修改的性质,我需要进行从 V2 到 V3 的重量级迁移,其中包括复制属性数据、填充新属性和设置关系。因此,我建立了一个映射模型,创建了我必要的迁移策略并点击了开始按钮。
这适用于 V2 到 V3,但是在测试从 V1 到 V3 的迁移时,我遇到了一系列错误...,例如
reason=无法就地迁移存储:验证错误缺少强制目标关系上的属性值
我正在使用以下 PSC 选项:
NSDictionary *options = @{
NSMigratePersistentStoresAutomaticallyOption : @YES,
NSInferMappingModelAutomaticallyOption : @YES
};
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]) {
那么,我的问题是 core-data 如何迁移数据?是按顺序进行的,所以我得到了从 V1 到 V2 的轻量级迁移,然后是重量级 V2 到 V3 的迁移,还是从 V1 到 V3 的迁移?如果是这样,我是否需要为 V1 到 V3 创建迁移策略(让事情变得非常笨拙以非常快速地涵盖每个组合)?
另外,一旦我开始使用重量级,我现在是否失去了轻量级迁移工具?
感谢您的建议和建议。
【问题讨论】:
标签: ios macos core-data core-data-migration