Вот пример 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)
}