2012-01-30 5 views
0

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

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 отношения должны быть удалены из группы (а также следует исключить из контактного лица, так как ни одна другая группа не имеет отношения с ContactB)

ContactC должен быть создан.

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

ответ

1

Вы создавали классы моделей для ваших основных моделей данных? Если это так, вы должны иметь 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 
+0

Да, я сгенерированные классы модели. Поэтому я вижу, что ваш код редактирует определенную группу, но я не вижу ничего, связанного с удалением «ContactB» полностью из объекта Contact? –

+0

Учитывая, что многие для многих я не знал, что вы хотите полностью удалить этот контакт (если другие группы могут быть связаны с ним). Просто удалите этот объект из управляемых объектов. – shawnwall

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