Excepción NSRangeException en el evento NSFetchedResultsChangeUpdate de NSFetchedResultsController

tengo unUITableView que usa unNSFetchedResultsController como fuente de datos.

El almacén de datos principales se actualiza en varios subprocesos en segundo plano que se ejecutan en paralelo (cada subproceso utiliza su propioNSManagedObjectContext).

El hilo principal observa laNSManagedObjectContextDidSaveNotification notificación y actualizaciones es contexto conmergeChangesFromContextDidSaveNotification:.

A veces sucede que laNSFetchedResultsController envía unNSFetchedResultsChangeUpdate evento con una indexPath que ya no existe en ese punto.

Por ejemplo: el conjunto de resultados del controlador de resultados obtenido contiene 1 sección con 4 objetos. El primer objeto se elimina en un hilo. El último objeto se actualiza en un hilo diferente. Entonces a veces sucede lo siguiente:

controllerWillChangeContent: se llama.controller: didChangeObject: atIndexPath: forChangeType: newIndexPath: se llama con type = NSFetchedResultsChangeDelete, indexPath.row = 0.controller: didChangeObject: atIndexPath: forChangeType: newIndexPath: se llama con type = NSFetchedResultsChangeUpdate, indexPath.row = 3.

Pero el controlador de resultados obtenido solo contiene 3 objetos ahora, y si se llama

MyManagedObject *obj = [controller objectAtIndexPath:indexPath]

para actualizar la celda de vista de tabla de acuerdo con laNSFetchedResultsChangeUpdate evento, esto se estrella con unaNSRangeException excepción.

¡Gracias por cualquier ayuda o ideas!

Respuestas a la pregunta(2)

Su respuesta a la pregunta