IPhone CoreData: как я должен связать много дочерних объектов с их родителями - PullRequest
0 голосов
/ 27 апреля 2010

Я пытаюсь импортировать данные из базы данных, которая использует отношения первичного ключа / внешнего ключа, в базу данных основных данных в Xcode.

У меня есть код, который создает сотни дочерних объектов в контексте управляемого объекта:

У каждого ребенка есть идентификатор, который соответствует родителю.

child1    parentID = 3
child2    parentID = 17
child3    parentID = 17
...
childn    parentID = 5

Теперь мне нужно связать каждого ребенка со своим родителем. Все родители хранятся в постоянной памяти.

Моей первой мыслью было сделать выборку для каждого ребенка, чтобы получить его родителя. Тем не менее, я думаю, что это будет медленно.

Я прав? Как мне сделать это вместо этого?

Ответы [ 2 ]

3 голосов
/ 27 апреля 2010

Почему вы моделируете эти родительско-дочерние отношения, используя атрибут в дочерней сущности? Вы должны смоделировать это, используя отношение «многие» от родительского объекта к дочернему объекту и обратное отношение «один к одному» от дочернего объекта к родительскому объекту. Установите каскад удаления в отношении ко многим и обнулите в отношении к одному.

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

0 голосов
/ 28 апреля 2010

Я рассмотрел несколько примеров и решил, что лучшим подходом будет следующий

1) Приведи всех родителей

2) Перенести их в словарь с указанием их parentID в качестве ключа

Затем для каждого ребенка найдите его родителя в словаре, затем свяжите их вместе.

...