【问题标题】:Why does isConfiguration:compatibleWithStoreMetadata return yes, even though a mapping model is used?为什么 isConfiguration:compatibleWithStoreMetadata 会返回 yes,即使使用了映射模型?
【发布时间】:2016-12-02 22:54:20
【问题描述】:

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

- (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。因此,应用映射模型的代码永远不会被调用。

Core Data 是否以某种方式自动应用映射模型?

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

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

我很乐意提供任何必要的附加信息。

【问题讨论】:

    标签: objective-c core-data-migration


    【解决方案1】:

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

    所以 isConfig... 正确返回了 yes。

    我的坏!!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-14
      • 2019-04-03
      • 2021-09-28
      • 1970-01-01
      • 2021-06-21
      相关资源
      最近更新 更多