2012-02-16 2 views
0

У меня есть подкласс NSManagedObject, который имеет некоторые глубокие отношения. Отношения, затронутые здесь следующим образом (для например):Удаление нескольких объектов в данных ядра

order.subOrders

suborder.items

Таким образом, порядок имеет несколько подотряда (ко-многим) и подотряд имеет несколько элементов (в -многие).

Скажем, у моего заказа есть 3 подотряда, и у каждого подотряда есть 3 предмета. Мне нужно удалить один элемент из каждого подотряда примерно в одно и то же время.

Итак, я попытался следующие:

for(Item *item in itemsToBeDeleted) { 
     [context deleteObject:item]; 
} 
[context save:&error]; 

Я затем снова запустить приложение и оно кажется, что только один из пунктов был удален. Таким образом, я удаляю 2 оставшихся элемента (используя тот же метод) и повторно запускаю приложение, но снова удаляется только один.

Может кто-нибудь может указать мне в правильном направлении?

ответ

1

Мое предположение, что вы ставите только один объект Item в itemsToBeDeleted коллекции. Не могли бы вы разместить код, показывающий, как заполняется эта коллекция?

+0

Thanks Michal. В коллекции есть определенное количество объектов, так как каждый NSLog'd на каждой итерации. Каждый объект в коллекции кажется правильным объектом, который также нуждается в удалении .... –

+0

Полезно знать это, но если вы ожидаете помощи, я боюсь, что вы должны загрузить больше кода для анализа. Я не думаю, что что-то не так с кодом выше. –

+0

Спасибо, Михал. Код действительно намного сложнее, чем просто (хотя сама часть удаления так просто). Проблема решена сама собой, когда я начал использовать другой код при итерации по этим элементам. Я могу только предположить, что я допустил ошибку в одном из моих методов при сборе элементов для удаления. –

0

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

Delete rule

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