Исчезающие NSManagedObjects - PullRequest
0 голосов
/ 11 мая 2011

Я работаю над приложением на основе документов.

При открытии сохраненного файла я загружаю в NSManagedObjectContext в контроллер представления. Этот контроллер представления должен наблюдать за измененным свойством «глубина» на всех объектах определенного типа. Когда контроллер представления получает контекст, он получает все эти объекты, добавляет себя в качестве наблюдателя этого значения для каждого и сохраняет их в массиве для отслеживания.

Всякий раз, когда Core Data отправляет уведомление ContextDidChange, я добавляю созданные объекты в этот массив после наблюдения за ними. Для удаленных объектов я удаляю контроллер представления как наблюдатель и удаляю их из этого массива.

Это прекрасно работает, пока я не закрою документ и не открою его снова. Когда это происходит, все объекты добавляются в этот массив. Наблюдение работает отлично. Однако, когда появляется первый «NSManagedObjectContextObjectsDidChangeNotification», все мои объекты NSManagedObject почему-то больше не находятся в массиве, который я настроил. При удалении появляется сообщение о том, что я не могу удалить наблюдателя, который не является наблюдателем.

Это очень странно.

Почему эти NSManagedObjets внезапно исчезли? Я не выпускаю массив или вообще не делаю с ним забавных дел.

1 Ответ

0 голосов
/ 11 мая 2011

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

NSManagedObjectContextObjectsDidChangeNotification.

Убедитесь, что при закрытии документа контроллер представления удаляет себя в качестве наблюдателя уведомлений.

...