Tengo un NSFetchedResultsController configurado para llenar un UITableView, basado en mi 'NSManagedObjectContext' principal.NSFetchedResultsController no muestra actualizaciones de otros contextos
En un temporizador, continuamente agrego objetos en un NSManagedObjectContext separado, pero uno que comparte su NSPersistantStoreCoordinator con el contexto principal.
Veo que se envían las notificaciones de NSManagedObjectContextWillSaveNotification, y cuando dejé de reiniciar la aplicación, tengo todos los datos de la ejecución anterior. Sin embargo, no ocurren actualizaciones en el NSFetchedResultsController actual.
He creado un proyecto de prueba y lo coloqué en here.
(inicialmente pensé esto sucedía debido a que hay múltiples hilos en el juego, sin embargo, sucede cuando todo se hace en un hilo).
pregunta original
Tengo una NSFetchedResultsController configurado para rellenar una UITableView, con sede fuera de mi 'principal' NSManagedObjetContext.
En un hilo de fondo, descargo e importo varios objetos en un NSManagedObjectContext separado, pero uno que comparte su NSPersistantStoreCoordinator con el contexto del hilo principal.
Estoy registrado para recibir notificaciones NSManagedObjectContextWillSaveNotification. Cuando los obtengo, los envío al hilo principal y los paso a mi contexto principal.
Utilizando el depurador, puedo ver estos entrar, y verificar que están, de hecho, agregando objetos al contexto. Sin embargo, mi NSFetchedResultsController no se está actualizando. Si hago todo esto en el hilo principal, funciona. Llamar a -performFetch: en el controlador hará que se actualice, así que sé que no es que no esté viendo los objetos nuevos.
La mayor parte de esto es un código repetitivo, simplemente divídalo en diferentes hilos.
Al hacer "todo esto en el hilo principal", ¿realmente hizo dos contextos en el hilo principal y llamó a 'mergeChangesFromContextDidSaveNotification:' etc.? – Yuji
No, cuando deshabilito el subprocesamiento múltiple, todo se hace con un contexto (antes tenía la respuesta incorrecta). –
¿Se ha determinado que esto es un error con NSFRC? –