2012-02-01 4 views
2

у меня есть 3 сущности, как это:не основные данные автоматически заботиться с обратными отношениями

sorry that this image has a problem that the "day" relationship of "Week" entity should be to-many, there should be 2 arrows on the end of the relationship

жаль, что этот образом есть проблема, что «день» отношения субъекта «Неделя» должны быть в -Много, должно быть 2 стрелки в конце отношений.

теперь здесь возникает 2 вопроса.

1-й. Для любого дня-класс (Customized подкласса NSManagedObject) объектов, после того, как я забочусь о своих отношениях, как:

Week* aWeek; 
Day *aDay; 
[aWeek addDayObject:aDay]; 

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

но наоборот, я обнаружил, что отношения «thisWeek» объекта Day «aDay» по-прежнему ноль.

Я слышал, что после того, как вы свой подкласс создающих из NSMangedObject, вы получили методы, как

- (void)addXXXObject:(xxx)xxx 

, чтобы помочь вам справиться с ко-многим и автоматически заботиться с обратной зависимостью.

но здесь похоже нет. Так что я должен иметь дело с обратной зависимостью от себя,

или если данные ядра предоставляют, как я могу сделать это автоматически, добавив объект в обратную связь?

2-й. Предположим, что существует много «Дня» с одной «Неделей», связанных их отношениями,

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

если он просто позволяет пользователю удалить этот день,

, если нет, то мы также удалить «Неделя» объект.

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

Я не так ясно с этими правилами ..

Спасибо!

ответ

5

CoreData должен позаботиться о обратной связи, как только вы определили ее в обоих объектах. См. here.

Я хотел бы использовать аннулирует правила удаления для дня-> недели отношений и каскада для недельном> дня.
Когда вы удалите неделю, все связанные с ней дни также будут удалены.
Когда вы удалите день, он будет удален из дней недели. Вы не можете автоматически удалить неделю, когда у нее больше нет дней. Однако вы можете наблюдать за днями недели и удалять самостоятельно, если self.days.count == 0.

+0

Thankk много! Это действительно полезно! –

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