Что может привести к тому, что mergeChangesFromContextDidSaveNotification не будет объединять / аннулировать объекты, которые были обновлены?

[EDIT: упрощенная версия вопроса]

  1. mainMOC - это основной контекст управляемого объекта

  2. editorMOC - это контекст управляемого объекта, созданный в editorViewController с менеджером отмены так что пользователь может редактировать один управляемый объект

  3. после сохранения editorMOC , mainMOC обновляет обновленный управляемый объект в обработчике уведомлений для NSManagedObjectContextDidSaveNotification

  4. в обработчике сохранения , если я использую [mainMOC refreshObject: obj mergeChanges: YES] , обновления объекта не отражаются в пост-обновлении mainMOC . Если я использую [mainMOC refreshObject: obj mergeChanges:

    [ОРИГИНАЛЬНЫЙ ВОПРОС]

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

    Вот моя ситуация. Все, что описано ниже, выполняется в основном потоке.

    1. Приложение имеет основной контекст управляемого объекта, называемый mainMOC , доступ к которому осуществляется в основном потоке и который используется с NSFetchedResultsControllers для отображения данных в различных представлениях таблиц.

    2. У меня есть контроллер представления называется EditorViewController , который позволяет редактировать существующий объект определенной сущности. Этот контроллер представления создает свой собственный контекст управляемого объекта, называемый editorMOC , используя тот же постоянный координатор хранилища с менеджером отмены, поэтому изменения можно откатить или сохранить при закрытии редактора.

    3. EditorViewController наблюдает за NSManagedObjectContextDidSaveNotification . Когда происходит это уведомление, обработчик уведомлений вызывает [_ mainMOC mergeChangesFromContextDidSaveNotification:

7
задан XJones 11 May 2011 в 16:23
поделиться