2013-03-05 4 views
2

Я пытаюсь установить отношения в Core Data. У меня есть список деревьев, и у каждого Дерева будет список Фруктов. Таким образом, у меня есть объект Tree и объект Fruit.Настройка отношения родитель-потомок в данных ядра

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

Как настроить эти отношения? Должен ли я дать Fruit атрибут, называемый деревом? И как установить отношения в коде, например, когда я создаю Fruit, как мне связать его с данным Tree?

ответ

14

Soleil,

Это довольно просто. Прежде всего, ваша модель должна выглядеть следующим образом (для простоты я пропустил атрибуты).

enter image description here

В этом случае Tree может иметь нуль или более Fruit сек (см fruits отношения). Напротив, Fruit имеет отношение tree (обратное отношение).

В частности, fruits отношение должно выглядеть следующим образом

enter image description here

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

tree отношения как следующий

enter image description here

Это отношения один-к-одному, так как плод может существовать только тогда, когда присоединен к дереву. Дополнительно флаг не задан. Итак, когда вы создаете плод, вам также нужно указать его родителя (в этом случае дерево). Правило Nullify означает, что при удалении плода Core Data не удаляет дерево, связанное с этим фруктом. Он удалит только указанные вами фрукты.

При создании Fruit сущности, вы должны следовать тем же путем

NSManagedObject *specificFruit = [NSEntityDescription insertNewObjectForEntityForName:@"Fruit" inManagedObjectContext:context]; 
[specificFruit setValue:parentTree forKey:@"tree"]; 

или если у вас есть создать NSManagedObject подклассы:

Fruit *specificFruit = [NSEntityDescription insertNewObjectForEntityForName:@"Fruit" inManagedObjectContext:context]; 
specificFruit.tree = parentTree; 

Надежда, что помогает.

P.S. Проверьте код, так как я написал без поддержки Xcode.

+0

Не должно ли дерево иметь отношение ко многим, а не к фруктам? наоборот? – lakesh

+0

@lakesh Возможно, я не объяснил это хорошо, но, как я писал, «Дерево» может иметь ноль или больше фруктов. «Фрукт» связан с одним деревом. Работает ли это для вас? –

+0

Отличный ответ, спасибо.Я многое сделал, но вы заполнили некоторые детали, которые очень помогут. – soleil

Смежные вопросы