Обработка равных вложенных объектов в Realm - PullRequest
0 голосов
/ 08 февраля 2019

Вот пример JSON, который я получаю с сервера:

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

После анализа их у объектов у меня есть два корневых объекта с вложенными одинаковыми, но не одинаковыми тегами, но с одинаковыми идентификаторами,который я пометил как primaryKey ().При сохранении массива корневых объектов я получаю довольно ожидаемую ошибку:

«Завершение приложения из-за необработанного исключения« RLMException », причина:« Попытка создать объект типа «Tag» с существующим значением первичного ключа »1'. "

Есть ли какой-нибудь быстрый способ заменить вложенный объект ссылкой на уже сохраненный при записи базового объекта?Или, может быть, вызвать автоматическое обновление для вложенных объектов?


Редактировать: Вот моя модель и метод сохранения:

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)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...