Отображение встроенных объектов в iOS Core Data

Предположим, что есть веб-сервис, возвращающий JSON-ответ, подобный следующему:

{
   "id": "123",
   "name": "John Doe",
   "phone": {
      "country_code": "1",
      "area_code": "11",
      "number": "55544433"
   }
}

Это описание сущности Person, но внутри этой сущности есть свойство phone, содержащее внедренный объект.

Телефон не является сущностью, и на него не ссылается идентификатор, он полностью содержится внутри области действия этой сущности. Однако было бы желательно отобразить его на Phone @interface в моем коде (например, он мог бы иметь метод "formatAsString", который возвращает форматированную строку, например: "+1 (11) 55544433")

Как мне справиться с этим случаем при сопоставлении модели с iOS Core Data?

1 ответ

Решение

Создать Person сущность с to-many (или к одному, если есть только один номер телефона) Phone юридическое лицо.
Phone субъект будет иметь отношение один к одному Person юридическое лицо.
Кроме того, он будет иметь внутреннюю структуру, которую вы описали (код страны, код области, номер).

Вам не нужно id свойство для создания сущности CoreData.

Вы можете установить отношение "каскад", чтобы при удалении человека удалялись все связанные телефонные номера.

Когда вы пересекаете свой ответ JSON, прочитайте клавишу "телефон" в Phone сущность и его person собственность на человека, которого вы в настоящее время пересекаете.

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