gpt4 book ai didi

ios - 使用主要 ID 更新 Realm 关系

转载 作者:行者123 更新时间:2023-11-29 00:59:22 27 4
gpt4 key购买 nike

是否可以通过仅传递关系的 id 来更新 Realm 对象的关系?

如果我有一个 Library具有 List<Books> 的类关系,我想合并两个 Libraries在一起,我认为可以这样做:

let bookIds = (firstLibrary.books.toArray() + secondLibrary.books.toArray).map { $0.id }

然后我使用 ObjectMapper 和 SugarRecord:

let changes = ["books": bookIds]
Mapper<T>().map(changes, toObject: secondLibrary)
let realm = self.realm
realm.add(secondLibrary, update: true)

但是图书列表没有得到更新。我认为这是因为 ObjectMapper 对主要 ID 一无所知,因此尝试将它们映射到对象中不会做任何事情。

Realm 是否可以通过主 ID 进行更新?如果是这样,我很乐意重写我的持久性堆栈。

最佳答案

供将来引用:一种解决方法,已在 this Github issue 上讨论过,就是把例子中的对象创建代码修改成这样:

let books = ["1", "2"].map { realm.objectForPrimaryKey(Book.self, key: $0) }
realm.create(Library.self, values: ["id": "4321", "books": books], update: true)

不可能将主键值列表作为值的一部分直接传递到 create() API 中以创建 Library,并自动让 Realm创建或更新与这些主键关联的 Book 对象。

相反,此解决方法首先使用 objectForPrimaryKey() 为每个主键值检索或创建 Book 对象,然后创建 Library通过 create() 使用那些 Book 对象。

关于ios - 使用主要 ID 更新 Realm 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37200924/

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