Cocoa-Touch - базовые данные, обновляющие отношения «многие ко многим» - PullRequest
0 голосов
/ 30 января 2012

У меня есть две сущности, одна называется Group, а другая - Contact.Они имеют отношение многие ко многим (как минимум с одним).Таким образом, по крайней мере один контакт может принадлежать одной или нескольким группам, и по крайней мере одна группа может принадлежать одному или нескольким контактам.

Contact <<-->> Group

Теперь, когда я хочу обновить группу, имеющуюся в моем контроллере представления, мойдоступен подкласс NSManagedObject Group.(@property (nonatomic, strong) Group *selectedGroup;)

Скажите, если группа сначала имеет отношения с 3 контактами, после того как я обновил эту группу, у нее должно быть 2 контакта (1 из исходных контактов и 1 новый контакт).

Before update    After Update
Group            Group
-----            -----
ContactA         ContactA
ContactB         ContactD
ContactC

ContactA должен оставаться неизменным.

Это означает, что отношение ContactB должно быть удалено из группы (а также должно быть удалено из объекта Contact, поскольку ни одна другая группа не имеет отношения с ContactB) * Следует создать 1018 *

ContactC.

Как бы я справился с этим сценарием?Я не могу заставить его работать.

1 Ответ

1 голос
/ 30 января 2012

Вы генерировали классы моделей для своих основных моделей данных? Если это так, вы должны создать CoreDataGeneratedAccessors, которые выглядят так в классе вашей группы:

- (void)addContactObject:(Contact *)value;
- (void)removeContactObject:(Contact *)value;

Затем вы можете сделать следующее:

Group *group = ...
Contact *contactB = ...
Contact *contactC = ...
Contact *contactD = ...
[group addContactObject:contactD];
[group removeContactObject:contactB];
[group removeContactObject:contactC];
//save your context
...