在领域之间复制对象时需要迁移
Migration required when copying objects between Realms
我正在尝试在两个 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 数据库文件时,迁移工作完美。但是,如果我不替换文件而是尝试在它们之间复制对象,我会得到 "migration is required for object" 等
我尝试在每个配置中明确说明路径、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)
}
}
我正在尝试在两个 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 数据库文件时,迁移工作完美。但是,如果我不替换文件而是尝试在它们之间复制对象,我会得到 "migration is required for object" 等
我尝试在每个配置中明确说明路径、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)
}
}