Pergunta

Eu tenho um NSFetchedResultSController configurado para preencher uma View Uable, com base no meu 'principal' nsanGageObjectContext.

Em um cronômetro, adiciono continuamente objetos a um NSmanAgedObjectContext separado, mas que compartilha seu NSPERSISTANTStoreCoordinator com o contexto principal.

Eu posso ver as notificações NSMANAGEDOBJETCONTEXTWILLSAVENOTIFICAÇÃO sendo enviadas e, quando saí de reiniciar o aplicativo, tenho todos os dados da execução anterior. No entanto, nenhuma atualização acontece com o atual NSFetchEdResultScontroller.

Eu criei um projeto de teste e o coloquei aqui.



(Inicialmente, pensei que isso estava acontecendo por haver vários threads em jogo; no entanto, isso acontece quando tudo é feito em um tópico).

Pergunta original

Eu tenho um NSFetchedResultSController configurado para preencher uma View Uable, com base no meu 'principal' nsanGageObJetContext.

Em um tópico em segundo plano, faço o download e importo vários objetos para um NSmanAgedObjectContext separado, mas que compartilha seu NSPERSISTANTSOREcoordinator com o contexto do thread principal.

Estou registrado para receber notificações NSMANAGEDOBJETCONTEXTWILLSAVENOTIFICATIVA. Quando os pego, encaminhe -os para o tópico principal e os passo para o meu contexto principal.

Usando o depurador, posso assistir isso e verificar se eles estão, de fato, adicionando objetos ao contexto. No entanto, meu nsfetchedResultScontroller não está atualizando. Se eu fizer tudo isso no tópico principal, ele funciona. Chamando -PerformFetch: no controlador fará com que ele seja atualizado, então eu sei que não é que não esteja vendo os novos objetos.

A maior parte disso é o código da caldeira, basta dividir -se em encadeamentos diferentes.

Foi útil?

Solução

Você está recebendo alguma chamada de delegados do NSFetchedResultScontroller? Caso contrário, isso pode ser um bug com o próprio NSFetchedResultScontroller. Eu recomendaria criar um projeto de teste que possa confirmar/negar esse problema isoladamente.

Se você pode duplicar isso isoladamente;

  1. Eu adoraria ver isso :)
  2. Arquive um radar com a Apple.

Depois de revisar o código, a resposta é alterar seu observador de notificação de NSManagedObjectContextWillSaveNotification para NSManagedObjectContextDidSaveNotification. Você estava enviando a mensagem apenas antes da O salvamento ocorreu que estava causando seus problemas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top