У меня есть UITableView
, который использует NSFetchedResultsController
в качестве источника данных.
Основное хранилище данных обновляется в нескольких фоновых потоках, работающих параллельно (, каждый поток использует свой собственныйNSManagedObjectContext
).
Основной поток наблюдает за NSManagedObjectContextDidSaveNotification
уведомление и обновляет его контекст с помощью mergeChangesFromContextDidSaveNotification:
.
Иногда случается, что NSFetchedResultsController
отправляет NSFetchedResultsChangeUpdate
событие с несуществующим indexPath больше на тот момент.
Например :Результирующий набор извлеченного контроллера результатов содержит 1 раздел с 4 объектами. Первый объект удаляется в одном потоке. Последний объект обновляется в другом потоке. Затем иногда происходит следующее:
Но полученный контроллер результатов теперь содержит только 3 объекта,а если позвонить
MyManagedObject *obj = [controller objectAtIndexPath:indexPath]
обновить ячейку табличного представления в соответствии с NSFetchedResultsChangeUpdate
событие, происходит сбой с исключением NSRangeException
.
Спасибо за любую помощь или идеи!