Моделирование отношения один-ко-многим в Core Data для iOS - PullRequest
6 голосов
/ 17 июня 2011

У меня есть две сущности: пациент и контрольная точка. Пациент имеет такие атрибуты, как DOB, имя, ID и т. Д. Контрольная точка имеет такие атрибуты, как dateRecorded, рост, вес и т. Д.

Возможно, вы поняли - я хочу, чтобы был набор пациентов, и тогда у каждого пациента могли быть контрольные точки, связанные с этим пациентом.

На обоих объектах, как мне установить настройки? Настройки: Relationship Window

Я посмотрел на документацию для этого, и я все еще был в замешательстве. Я думаю, что я хочу, чтобы это было отношение один ко многим (для пациента), но тогда я не уверен, как установить обратное для любого из них, или правила удаления и прочего. БЛАГОДАРЮ ВАС!!

Ответы [ 2 ]

7 голосов
/ 17 июня 2011

Я только начал работать с Core Data на этой неделе.Большой вопрос!

Отношения:

Поскольку у одного пациента может быть много контрольных точек, отношение Patient to Checkpoint является отношением One to Many.Концепция «обратных отношений», по сути, такова: у вас есть отношения, идущие в одном направлении (от пациента к контрольной точке) - теперь давайте посмотрим на это с точки зрения обратного , точки зрения контрольной точки.Контрольная точка может применяться только к одному пациенту.Следовательно, отношение Checkpoint to Patient является отношением One to One.

Обратные отношения:

Чтобы обработать обратные отношения, просто создайте каждое отношение, игнорируя обратные.Затем, после того, как у вас есть отношение к каждому объекту, продолжайте и определите обратное как отношение к другому объекту.

Другими словами, отношение указывает на другую сущность или группу сущностей.Отношение обратное указывает на отношение на другом объекте.

Удалить правила:

Что касается правил удаления, то этодовольно простой.При попытке удалить пациента с контрольными точками ...

  • Запретить: основные данные не позволят вам удалить пациента.
  • Каскад: Базовые данные будут удалять сущность (пациента), а также каскадно перемещаться по отношениям и удалять эти объекты.(Другими словами, Core Data также удалит объекты Checkpoint.)
  • Nullify: Core Data удалит пациента, но сначала удалит связь.Контрольная точка останется нетронутой.

Для объекта «Пациент» может потребоваться либо запрет, либо каскад, в зависимости от того, как вы хотите управлять своими данными.Исходя из вашего варианта использования, вы, вероятно, не хотите обнулять, поскольку контрольные точки зависят от сущностей пациента.

Вы хотите обнулить контрольную точку, поскольку каскад не позволит вам удалить контрольную точку, не удаляя всего пациента, и Deny фактически принудительно вызовет то же самое.

2 голосов
/ 17 июня 2011

Исходя из сценария с менино, он выглядит как отношение один ко многим между таблицами пациента и контрольных точек.

Теперь добавьте отношение «Пациент» к «Контрольной точке», а также установите обратное значение между таблицами..

Кроме того, установите правило удаления для обоих отношений на «каскад».Это означает, что если вы удалите один объект с помощью Patient, соответствующая Coredata также удалит связанный объект.

...