首页 > 解决方案 > 未触发领域模式迁移块

问题描述

我在 iOS 和 SwiftUI 中使用 Realm 数据库。我在我的 Realm 对象模式之一中添加了一个新字段,我们称之为Project. 现在,当我这样做realm.objects(Project.self)时,抱怨我需要进行迁移。因此,根据iOS 迁移文档,我在我的领域初始化代码中添加了一个schemaVersionmigrationBlock,如下所示。

config.schemaVersion = 1 // Older version was 0
config.migrationBlock = { migration, oldSchemaVersion in
    logger.debug("Performing migration since old schema \(oldSchemaVersion) is behind current schema \(currentSchemaVersion) ...")
    if oldSchemaVersion < 1 {
        migration.enumerateObjects(ofType: Project.className()) { (old, new) in
            new!["isDeleted"] = false
        }
    })
}

我在打开 Realm 之前打印了配置,我可以看到配置设置了迁移块字段。

...
schemaVersion = 1;
migrationBlock = <__NSMallocBlock__: 0x600001537ed0>;
...

Realm.asyncOpen(configuration: config)在尝试以and方式打开 Realm 后,我再次打印了 Realm 配置Realm(configuration: config),但缺少迁移块。

...
schemaVersion = 1;
migrationBlock = (null);
...

我的迁移块没有被触发,我怀疑我错过了一些东西!提前感谢您在正确方向上的任何帮助。

我尝试过的一些解决方案:

根据一些 Stack Overflow 帖子,我还尝试使用更大的架构版本(具体为 2、5、10)。另外,我在初始化时初始化我的主要领域(它Project.self是其中的一部分)SwiftUI.App

标签: iosswiftrealmrealm-mobile-platformrealm-migration

解决方案


推荐阅读