Swift: отношения модели Core Data с зеркальной моделью представления API - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь создать базовую модель данных, но как Core Data newb ie я не понимаю, как использовать отношения для моей цели.

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

class SheetModel {

     uplift: String
     date: String
     time: String
     density: String
     discrepancy: String
     id: String

  Mass {
      unit:  String
      display: String
      unitName: String
   }
  Density {
      unit:  String
      display: String
      unitName: String
   }
  Volume {
      unit:  String
      display: String
      unitName: String
   }
 }

Я не понимаю, как создать модель данных, чтобы я мог хранить что-то подобное выше. Моя (неудачная) попытка выглядит следующим образом:

enter image description here

Я знаю, что отношения здесь совершенно неправильные, но не могу понять, что мне делать. Вот. Таким образом, очевидно, что все сущности Volume, Mass, Density должны принадлежать одному и тому же NSManagedObject, который хранит подъем, date et c. атрибуты.

1 Ответ

0 голосов
/ 30 мая 2020

Вы неправильно понимаете, что означает «родительский объект» в CoreData! Вот как вы указываете наследование без включения. Поэтому, если у вас есть сущность Circle, было бы целесообразно, чтобы ее родительская сущность была более общей сущностью c Shape.

Вам нужно очистить эти настройки родительской сущности и вместо этого добавить " отношения "к вашим сущностям. Каждый из ваших объектов массы / плотности / объема должен иметь отношение, где место назначения - StoredRefuelSheet, правило удаления - Nullify, а тип - To One. Это означает, что вы не можете разделить массу между двумя листами и можете удалить массу, не удаляя принадлежащий ей лист. Вы также должны установить обратную связь, чтобы лист имел отношение mass с местом назначения Mass, правилом удаления Cascade и типом To One. Это означает, что если вы удаляете лист, его содержащаяся масса также удаляется.

После этого вы do фактически имеете возможность использовать родительские объекты: все ваши объекты массы / плотности / объема имеют те же поля! Это было бы хорошим вариантом использования абстрактной родительской сущности, которая определяет общие поля, поэтому вам не нужно их дублировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...