【问题标题】:RLMException: Cannot add an existing managed embedded object to a ListRLMException:无法将现有托管嵌入对象添加到列表
【发布时间】:2020-12-05 18:46:51
【问题描述】:
Object1: Object
    - id: String
    - title: String
    - items: [Object2]

Object2: EmbeddedObject
    - id: String
    - title: String
    - items: [Object3]

Object3: EmbeddedObject
    - id: String
    - title: String
    - color: String

以上是我拥有的架构示例,但是,出于某种奇怪的原因,每当我尝试将 Object1 添加到领域时,我总是在 RealmSwift 中遇到此错误。

*** Terminating app due to uncaught exception 'RLMException', reason: 'Cannot add an existing managed embedded object to a List.'

【问题讨论】:

  • 这个问题有点模糊,因为我们不知道这些对象有多少; - items: [Object2] 是列表还是数组或其他东西?嵌入式对象不应该有主键,那么“id”是什么?您能否更新问题以使其更清晰并向我们展示领域对象的实际代码?还包括导致错误的代码。请查看以下两个提问指南:How do I ask a good question? 和 How to create a Minimal, Complete, and Verifiable example

标签: swift mongodb realm realm-list


【解决方案1】:

此错误可能是由于在 realm.write 操作之外创建嵌入对象,然后尝试在写入操作中将其添加到列表中。一切都必须在写操作中完成。

例如,要将新的 Object3 添加到 Object2 中,您需要这样做:

try! realm.write {
    let newItem = Object3(id: "someID", title: "Some Title", color: "Some Color")
    object1.items[indexToWrite].items.append(newItem)
}

注意:请不要强制尝试在真实应用中写入领域。 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    相关资源
    最近更新 更多