Отображение отношений MagicalRecord дублирует объекты, несмотря на первичные ключи
Мне нужна помощь по проблеме, с которой я сталкиваюсь при импорте данных MagicalRecord. У меня сложилось впечатление, что MagicalRecord смог обработать сопоставление отношений без дублирования объектов, глядя на первичные ключи (relatedByAttribute
).
Вот простой JSON:
[
{
parentId: "<unique id>",
parentName : "<name>",
children : [
{
childId: "<unique id>",
childName: "<name>"
},
{
childId: "<unique id>",
childName: "<name>"
}
]
},
{ <another parent with children> }
]
У меня есть NSManagedObject Parent
который имеет отношения ко многим с Child
NSManagedObject. Имя отношения children
и я установил relatedByAttribute
на Child
а также Parent
в childId
а также parentId
соответственно.
Когда я разбираю JSON Parent
не дублируется, и он правильно проверяет первичный ключ и использует существующий объект, если таковой имеется. Однако для Children
он дублирует объекты каждый раз, когда я анализирую JSON. Если я разберу Children
индивидуально (поэтому JSON просто содержит массив с дочерними словарями), у него нет проблем с правильным отображением данных и использованием существующих объектов для Children
которые уже существуют в базе данных.
Неужели я неправильно понял и неправильно оценил, как MagicalRecord отображает отношения? В настоящее время я установил класс расширения с помощью importChildren:`, где я могу обрабатывать все запросы вручную и соответственно создавать / импортировать объекты.
Спасибо!
1 ответ
Мне удалось решить это некоторое время назад.
Что я сделал, так это добавил relatedByAttribute
в словаре информации о пользователях для children
отношения И для Child
сущность, а также.
Так что нажмите на отношения и установите relatedByAttribute
в childId
(в моем примере выше), а также нажмите на дочернюю сущность слева и для этого также установите relatedByAttribute
в childId
в словаре информации о пользователе для самой сущности.
Это позволяет Magical Record правильно отображать, используя существующие объекты, или создавать новые, если это необходимо - при условии, что атрибут ID на 100% уникален!