【发布时间】:2020-10-30 06:29:38
【问题描述】:
例如。我有旧模型,像这样:
class Foo:Object {
@objc dynamic var id = ObjectId.generate()
let bars = List<Bar>()
override class func primaryKey() -> String? {
return "id"
}
}
class Bar:Object {
@objc dynamic var id = ObjectId.generate()
override class func primaryKey() -> String? {
return "id"
}
}
以及新型号:
class Foo:Object {
@objc dynamic var id = ObjectId.generate()
override class func primaryKey() -> String? {
return "id"
}
}
迁移代码:
let config = Realm.Configuration(
schemaVersion: 1,
migrationBlock: {migration, oldSchemaVersion in
if oldSchemaVersion < 1 {
migration.deleteData(forType: "Bar")
}
})
let realm = try! Realm(configuration: config)
运行时报错“Table is target of cross-table link columns”。
如果我先跑
let config = Realm.Configuration(
schemaVersion: 1,
migrationBlock: {migration, oldSchemaVersion in
if oldSchemaVersion < 1 {
}
})
然后跑了
let config = Realm.Configuration(
schemaVersion: 2,
migrationBlock: {migration, oldSchemaVersion in
if oldSchemaVersion < 1 {
}
if oldSchemaVersion < 2 {
migration.deleteData(forType: "Bar")
}
})
结果奏效了。
这里的问题是,这是一种将两次迁移合并为一次迁移的方法吗?
【问题讨论】:
标签: realm-list realm-migration