2010-01-28 7 views
5

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.

+0

Al hacer "todo esto en el hilo principal", ¿realmente hizo dos contextos en el hilo principal y llamó a 'mergeChangesFromContextDidSaveNotification:' etc.? – Yuji

+0

No, cuando deshabilito el subprocesamiento múltiple, todo se hace con un contexto (antes tenía la respuesta incorrecta). –

+0

¿Se ha determinado que esto es un error con NSFRC? –

Respuesta

11

¿Recibe alguna devolución de llamada delegada desde NSFetchedResultsController? Si no, esto puede ser un error con NSFetchedResultsController. Recomendaría crear un proyecto de prueba que pueda confirmar/denegar este problema de forma aislada.

Si puede duplicarlo de forma aislada;

  1. Me encantaría verlo :)
  2. archivo un radar con Apple.

Después de revisar el código, la respuesta es cambiar su observador notificación del NSManagedObjectContextWillSaveNotification a NSManagedObjectContextDidSaveNotification. Usted estaba enviando el mensaje solo antes del donde ocurrió el guardado que causaba sus problemas.

Cuestiones relacionadas