Базовые данные не могут выполнить ошибку для объекта после получения

Я получаю данные с веб-сервера, обрабатываю их в дочернем частном фоновом контексте, называемомbackgroundMOC, Это ребенокmainMOC который связан с основным пользовательским интерфейсом, поэтому экономия наbackgroundMOC вызывает изменения пользовательского интерфейса.mainMOC это ребенокmasterMOC которая является частной фоновой очередью, привязанной к постоянному хранилищу, поэтому сохранение на главном сервере сохраняет на диск.

Теперь я получаю данные, создаю новые объекты наbackgroundMOCзатем сохранитеbackgroundMOC (чтобы обновлялся пользовательский интерфейс), сохранитеmainMOC, (так что я могу почти сохранить на диск), и сохранитьmasterMOC (чтобы я смог наконец записать на диск). Проблема заключается в том, что когда объект появляется в пользовательском интерфейсе через контроллер выборочных результатов,objectId все еще временный.

Это вызывает проблемы с дублирующимися строками, где, если я получаю те же данные с сервера (случайно), мойbackgroundMOC не знает, что этот объект уже существует, потому что ему не был назначен постоянный идентификатор, поэтому он создает другой объект. Когда я перезапускаю приложение, дублирующийся объект исчезает, поэтому я знаю, что это просто проблема с отображением идентификатора.

Я подумал, что могу попробовать

[backgroundMOC obtainPermanentIDsForObjects:backgroundMOC.registeredObjects.allObjects error:nil];

перед сохранением вообще (я пытался после сохранения тоже). Однако по какой-то причине вызов этой строки вызывает исключение:

CoreData could not fulfill a fault for...

Если у вас есть какие-либо советы, которые могут привести меня в правильном направлении, пожалуйста, поделитесь. Спасибо

Edit: Итак, изначально я вызывал receivePermanentIDsForObjects для backgroundMOC, который является дочерним по отношению к mainMOC, который является дочерним по отношению к masterMOC. Я переключил его, чтобы получить идентификаторы на mainMOC, и это решило все мои проблемы (на данный момент). Я никогда не должен был вызывать receivePermIds для дочернего контекста?

Ответы на вопрос(2)

Ваш ответ на вопрос