mainMOC
- это основной контекст управляемого объекта
editorMOC
- это контекст управляемого объекта, созданный в editorViewController
с менеджером отмены так что пользователь может редактировать один управляемый объект
после сохранения editorMOC
, mainMOC
обновляет обновленный управляемый объект в обработчике уведомлений для NSManagedObjectContextDidSaveNotification
в обработчике сохранения , если я использую У меня есть приложение на основе основных данных с несколькими контекстами управляемых объектов. Приложение сложное и проприетарное, поэтому я не могу просто поделиться кодом прямо из приложения. Я создал простое тестовое приложение, пытаясь воспроизвести свою проблему, но тестовое приложение не обнаруживает проблемы. Мне не удалось найти логической разницы между реализациями. Прошу прощения за то, что не опубликовал образец кода, я считаю, что подробно объяснил реализацию ниже. Если что-то непонятно, спрашивайте в комментариях, и я постараюсь уточнить. Вот моя ситуация. Все, что описано ниже, выполняется в основном потоке. Приложение имеет основной контекст управляемого объекта, называемый У меня есть контроллер представления называется [mainMOC refreshObject: obj mergeChanges: YES]
, обновления объекта не отражаются в пост-обновлении mainMOC
. Если я использую [mainMOC refreshObject: obj mergeChanges:
[ОРИГИНАЛЬНЫЙ ВОПРОС]
mainMOC
, доступ к которому осуществляется в основном потоке и который используется с NSFetchedResultsControllers
для отображения данных в различных представлениях таблиц. EditorViewController
, который позволяет редактировать существующий объект определенной сущности. Этот контроллер представления создает свой собственный контекст управляемого объекта, называемый editorMOC
, используя тот же постоянный координатор хранилища с менеджером отмены, поэтому изменения можно откатить или сохранить при закрытии редактора. EditorViewController
наблюдает за NSManagedObjectContextDidSaveNotification
. Когда происходит это уведомление, обработчик уведомлений вызывает [_ mainMOC mergeChangesFromContextDidSaveNotification: