2013-05-18 1 views
0

Итак, у меня есть объекты CoreData: Book,, Highlight. Книга содержит информацию о книге и NSSet от Bookmarks.В чем разница между self.managedObjectContext и managedObjectInstance.managedObjectContext?

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

Это код, который у меня есть из другого проекта, и я не могу понять, почему они использовали различные методы deleteObject.

Они идут как:

for (Bookmark *bookmark in book.bookmarks) { 
    [bookmark.mamagedObjectContext deleteObject:bookmark]; 
} 

В чем разница между использованием self.managedObjectContext и bookmark.managedObjectContext. Кроме того, ни один из них не оказывает никакого влияния на содержимое, и я получаю сообщение об ошибке при попытке удалить все закладки в цикле forin, а затем снова добавить новый набор с помощью цикла forin.

Просьба указать в комментариях, если требуется дополнительная информация.

+0

Этот цикл 'for' не должен использоваться, потому что для циклов forin' не разрешается изменять коллекцию. – sosborn

+0

@sosborn Это совершенно правильно на CD, так как объект помечен только для удаления. Когда жизненный цикл достигает конца, CD удаляет объекты в постоянном хранилище. –

ответ

2

managedObjectInstance.managedObjectContext возвращает контекст управляемого объекта, с которым зарегистрирован приемник.

Другими словами, если вы создали, например, закладку в контексте основного потока (тот, который связан с контекстом, созданным в основном потоке), то укажет на это bookmark.managedObjectContext.

Вы используете другой потолок? Различные контексты? Какая у вас ошибка? Поделитесь им, добавив редактирование на свой вопрос.

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