在领域迁移期间删除List <T>中的类

问题描述

例如。我有旧型号,像这样:

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)

运行时,错误显示“表是跨表链接列的目标”。

如果我先跑

let config = Realm.Configuration(
    schemaVersion: 1,oldSchemaVersion in
        if oldSchemaVersion < 1 {

        }
    })

然后运行

let config = Realm.Configuration(
    schemaVersion: 2,oldSchemaVersion in
        if oldSchemaVersion < 1 {

        }
        
        if oldSchemaVersion < 2 {
            migration.deleteData(forType: "Bar")
        }
    })

结果奏效。

这里是问题,这是将两次迁移合并为一次迁移的一种方法吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)