2013-05-13 4 views
1

Кажется, что я обнаружил странную проблему, когда мои удаленные объекты фактически не удалены. Это происходит только тогда, когда я отвечаю на theNSManagedObjectContextObjectsDidChangeNotification.Ошибка NSManagedObjectContextObjectsDidChangeNotification удаленных объектов

Подробнее: У меня есть список A < - >> B. Каскад удаляет «принадлежащие» экземпляры B.
Когда я удаляю экземпляр A, его «принадлежащие» экземпляры B удаляются, но экземпляр A не удаляется.

Когда я вызываю [context processPendingChanges]; в верхней части моего обработчика уведомлений, проблема кажется только происходит, когда я удаляю последний объект. В противном случае экземпляры A склонны придерживаться.

Итак, кажется, что корень проблемы в том, что я не понимаю о Core Data. Выяснить, почему было непродуктивно. Может ли кто-нибудь указать причину (я), я мог бы видеть это поведение?

ответ

0

я нашел две причины, это может произойти:

А) В моем случае моя первая стратегия заключается в создании временных графиков удаленных управляемых объектов в качестве организационного удобства. Вы должны изменить удаленные объекты во временном контексте управляемых объектов, иначе любые изменения, которые вы делаете для удаленных объектов, заменяют удаление. Сбросьте временный контекст, как только вы закончите работу с (удаленными) удаленными управляемыми объектами.
B) Объекты должны иметь счетчик ссылок 0 при удалении. Это означает, что перед удалением они должны быть освобождены от всех получаемых контроллеров результатов, NSArrays и т. Д.

Удовлетворительно A и B решили эту проблему.

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