在Realm中处理相等的嵌套对象

时间:2019-02-08 15:11:45

标签: ios realm

这是我从服务器获取的JSON示例:

[
    { 
        id = 1, 
        name = "Tagged",
        Tags = [
            {
                id = 1,
                text = "Tag1"
            }
        ]
    },
    { 
        id = 2, 
        name = "Tagged also",
        Tags = [
            {
                id = 1,
                text = "Tag1"
            }
        ]
    }
]

在将它们解析为对象之后,我有两个根对象,它们嵌套了相等的但不相同的标签,但仍具有相同的ID,我将其标记为primaryKey()。保存根对象数组时,我得到了预期的错误:

“由于未捕获的异常'RLMException'而终止应用程序,原因:'尝试创建具有现有主键值'1'的'Tag'类型的对象。”

有没有一种快速的方法来替换嵌套对象,使其链接到在编写基础对象时已经保存的链接?还是触发嵌套对象的自动更新?


编辑: 这是我的模型和保存方法:

class Title: Object {
    @objc dynamic var id: String = ""
    @objc dynamic var name: String?
    let tags = List<Tag>()
    override static func primaryKey() -> String? {
        return "id"
    }
}

class Tag: Object, BaseObject {
    @objc dynamic var id: String = ""
    @objc dynamic var text: String?

    override static func primaryKey() -> String? {
        return "id"
    }
}

let titles: [Title] = getTitles()
try! Realm().write {
    realm.add(tasks)
}

0 个答案:

没有答案