Кошмар с крахом executeBatchUpdates

Я сталкиваюсь с кошмаром крушения во времяperformBatchUpdates наcollection view.

Проблема в основном в следующем: у меня много изображений в каталоге на сервере. Я хочу показатьэскизы из этих файлов наcollection view, Но эскиз должен быть загружен с сервераасинхронно, По прибытии они будут вставлены в представление коллекции, используя что-то вроде этого:

dispatch_async(dispatch_get_main_queue(),
             ^{
               [self.collectionView performBatchUpdates:^{

                 if (removedIndexes && [removedIndexes count] > 0) {
                   [self.collectionView deleteItemsAtIndexPaths:removedIndexes];
                 }

                 if (changedIndexes && [changedIndexes count] > 0) {
                   [self.collectionView reloadItemsAtIndexPaths:changedIndexes];
                 }

                 if (insertedIndexes && [insertedIndexes count] > 0) {
                   [self.collectionView insertItemsAtIndexPaths:insertedIndexes];
                 }

               } completion:nil];
             });

проблема в этом (я думаю). Предположим, что в момент времени 0 представление коллекции содержит 10 элементов. Затем я добавляю еще 100 файлов на сервер. Приложение увидит новые файлы и начнет скачивать миниатюры. По мере загрузки эскизов они будут вставлены в представление коллекции. Но поскольку загрузка может занять разное время, и эта операция загрузкиasynchronousВ какой-то момент iOS потеряет счет того, сколько элементов в коллекции, и все это рухнет с этим катастрофическим позорным сообщением.

*** Завершение работы приложения из-за неперехваченного исключения «NSInternalInconsistencyException», причина: «Неверное обновление: недопустимое количество элементов в разделе 0. Количество элементов, содержащихся в существующем разделе после обновления (213), должно быть равно количеству элементов содержится в этом разделе до обновления (154), плюс или минус количество элементов, вставленных или удаленных из этого раздела (40 вставлено, 0 удалено) и плюс или минус количество элементов, перемещенных в или из этого раздела (0 перемещено в 0 переехал).

Доказательством того, что у меня есть что-то подозрительное, является то, что если я распечатываю количество элементов в наборе данных, я вижу ровно 213. Таким образом, набор данных соответствует правильному номеру, и сообщение является бессмысленным.

У меня была эта проблема раньше,Вот но это был проект iOS 7. Каким-то образом проблема вернулась теперь на iOS 8, и решения там не работают, и теперь набор данныхВ СИНХРОНИЗАЦИИ.

Ответы на вопрос(3)

Ваш ответ на вопрос