ios - 在 Realm 之间复制对象时需要迁移

标签 ios swift realm

我正在尝试在两个 Realm 数据库之间复制对象。第一个数据库的模式是版本 0,第二个是版本 1。

        let backupConfig = Realm.Configuration(
            path: "\(tmp)/ReadingLog.realm", // This Realm is version 0
            readOnly: true
        )

        let backupRealm = try! Realm(configuration: backupConfig)
        let defaultRealm = try! Realm() // My default Realm is version 1

        let books = backupRealm.objects(Book)

        try! defaultRealm.write {
            for book in books {
                defaultRealm.create(Book.self, value: book, update: true)
            }
        }

当我用旧的替换我当前的 Realm 数据库文件时,迁移工作完美。但是,如果我尝试在它们之间复制对象而不是替换文件,我会得到“对象需要迁移”等信息。

我尝试在每个配置中明确说明路径、schemaVersions 和 migrationBlocks,但这并不重要。

我做错了什么?

提前致谢

丹尼尔

最佳答案

好的,经过一段时间的迁移示例后,我设法解决了这个问题。

我不得不将我的新 schemaVersion (1) 添加到旧 Realm 数据库的配置中,这对我来说似乎有点违反直觉:

        let backupConfig = Realm.Configuration(
            path: "\(tmp)/ReadingLog.realm", // This file is version 0
            readOnly: true,
            schemaVersion: 1 // But I have to set this to version 1
        )

我以为 schemaVersion 应该是这个数据库的版本,所以 Realm 会知道 迁移哪个版本,但实际上它似乎是 我希望它迁移到 的版本。

然后我必须在那之后立即调用 migrateRealm(backupConfig)。然后成功了!

下面是工作代码:

        let backupConfig = Realm.Configuration(
            path: "\(tmp)/ReadingLog.realm",
            readOnly: true,
            schemaVersion: 1
        )
        migrateRealm(backupConfig)

        let backupRealm = try! Realm(configuration: backupConfig)
        let defaultRealm = try! Realm()

        let books = backupRealm.objects(Book)

        try! defaultRealm.write {

            for book in books {
                defaultRealm.create(Book.self, value: book, update: true)
            }
        }

关于ios - 在 Realm 之间复制对象时需要迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33449454/

相关文章:

android - Phonegap 设备视频选择器

ios - 将数据从单元格加载到 detailView 始终显示最后的数据

ios - swift 中的核心数据关系

swift - 使用 tvOS 强制触摸

ios - 如何在 didReceiveRemoteNotification 中获取 userInfo JSON 值

swift3 - 在realm-swift中添加新的realm对象时是否需要迁移?

objective-c - 带有下拉刷新功能的 Facebook iOS SDK 3.0 FBPlacePickerViewController 表

ios - UIImageView 中的图像粘在 UIImage 空间的底部

xamarin - 是否有任何直接的方法可以从 JSON 填充和更新 Realm-Xamarin?

ios - 在 Realm 中一对多链接对象