gpt4 book ai didi

ios - 执行从一个列表到另一个列表的 Realm 迁移

转载 作者:搜寻专家 更新时间:2023-10-31 22:46:14 24 4
gpt4 key购买 nike

在我的模型中,我想迁移一个 List<Item>该项目包含自定义类产品的位置,例如:

class Item: Object {

dynamic var product: Product?

}

只是一个List<Product>

我尝试了不同的方法,但似乎没有任何效果。例如这样的事情:

let items = oldObject.dynamicList("items")

for item in items {
let oldProduct = item["product"] as! MigrationObject
productList.append(oldProduct)
}

这会导致一个错误,指出该对象已被持久化。

如果我在迁移 block 中创建一个新产品,我的 Realm 中将有重复的对象。

我也试过直接分配给列表,如:newObject!["products"]没有附加但也无法让它工作。

迁移问题的真正解决方案是什么,有人可以指出正确的方向吗?

最佳答案

这里的问题是您正在隐式地尝试将已在另一个 Realm 中管理的对象添加到列表中,这通常是不允许的。这里的另一个 Realm 是这里的旧版本。

您可以在枚举模型时通过执行以下操作来解决此问题:

migration.enumerate("ObjectWithProductsList") { (oldObject, newObject) in
let productList = newObject.dynamicList("products")
let items = oldObject.dynamicList("items")
let newRealm = newObject.realm

for item in items {
let oldProduct = item["product"] as! MigrationObject
let newProduct = newRealm.objects(Product).where("id = %@", oldProduct["id"])
productList.append(newProduct)
}
}

关于ios - 执行从一个列表到另一个列表的 Realm 迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37566946/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com