Отображение отношений 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% уникален!

введите описание изображения здесь

Другие вопросы по тегам