为什么isConfiguration:compatibleWithStoreMetadata返回yes,即使使用映射模型?

时间:2016-12-02 22:54:21

标签: objective-c core-data-migration

我正在开发一个使用以下方法确定是否需要迁移核心数据的应用程序:

- (BOOL)isMigrationNeeded {
    BOOL isMigrationNeeded = NO;
    NSError *error;
    NSDictionary *sourceMetadata = [self sourceMetadata:&error];
    if (sourceMetadata != nil) {
        NSManagedObjectModel *destinationModel = [self managedObjectModel];
        isMigrationNeeded = ![destinationModel isConfiguration:nil
                                   compatibleWithStoreMetadata:sourceMetadata];
    }

    return isMigrationNeeded;
}

在最新版本的数据库中,添加了一个属性,该属性需要映射模型来设置其值。正确设置属性的值,即使isConfiguration:compatibleWithStoreMetadata返回YES。因此,永远不会调用应用映射模型的代码。

核心数据是否会以某种方式自动应用映射模型?

从最新版本迁移数据库时,这一切都正常。但我测试了旧版数据库的迁移,但未能设置新属性的值。

我想尝试在教程中找到的递归核心数据迁移方法,但如果isConfiguration,它将不会执行任何操作:compatibleWithStoreMetadata返回YES。

我很乐意提供任何必要的额外信息。

1 个答案:

答案 0 :(得分:0)

我的代码中的其他地方有一个错误,在调用isConfiguration:compatibleWithStoreMetadata之前,用新版本的模型覆盖了旧版本的模型。

所以isConfig ......正确地返回是。

我的坏!!!“