O Core Data não pôde atender a falha para o objeto após a obtenção dePermanentIDs

Estou recebendo dados de um servidor da web, processando-o em um contexto de plano de fundo privado filho chamadobackgroundMOC. É uma criança de ummainMOC que está ligado à interface do usuário principal, para salvar nobackgroundMOC aciona as alterações da interface do usuário. omainMOC é filho de ummasterMOC que é uma fila de segundo plano privada vinculada ao armazenamento persistente, portanto, salvar no mestre salva no disco.

O que eu faço agora é receber dados, criar novos objetosbackgroundMOCe depois salvebackgroundMOC (para que as atualizações da interface do usuário), salvarmainMOC, (para que eu possa quase salvar em disco), e salvarmasterMOC (para que eu possa finalmente gravar no disco). O problema é que quando o objeto aparece na interface do usuário por meio de um controlador de resultados buscados,objectId ainda é temporário.

Isso causa problemas com problemas de linha duplicados, onde se eu receber os mesmos dados do servidor (por acidente),backgroundMOC não sabe que este objeto já existe porque não foi atribuído um id permanente, então ele cria outro objeto. Quando eu reiniciar o aplicativo, o objeto duplicado desaparece, então eu sei que é apenas um problema com o mapeamento de id.

Então eu pensei que poderia tentar

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

antes de salvar a todos (eu tentei depois de salvar também). No entanto, por algum motivo, chamar essa linha gera uma exceção:

CoreData não pôde cumprir uma falha para ...

Se você tiver alguma sugestão que possa me levar na direção certa, por favor, compartilhe. obrigado

Editar: Ok, então inicialmente eu estava chamando getPermanentIDsForObjects no backgroundMOC, que é filho do mainMOC, que é filho do masterMOC. Eu troquei para obter os ids no mainMOC, e resolveu todos os meus problemas (por enquanto). Eu nunca deveria chamar getPermIds no contexto infantil?

questionAnswers(2)

yourAnswerToTheQuestion