У меня есть несколько ноющих проблем с NSFetchedResultsController и CoreData, по любому из которых я был бы очень признателен за помощь.
Проблема 1 - Обновления: я обновляю свой магазин в фоновом потоке, в результате чего определенные строки удаляются, вставляются или обновляются. Изменения объединяются в контексте основного потока с помощью метода «mergeChangesFromContextDidSaveNotification:». Вставки и удаления обновляются правильно, но обновления не обновляются (например, метка ячейки не обновляется вместе с изменением), хотя я подтвердил, что обновления проходят через contextDidSaveNotifcation, точно так же, как вставки и удаленные. Мой текущий обходной путь - временно изменить интервал устаревания контекста на 0, но это не похоже на идеальное решение.
Проблема 2 - Удаление объектов: размер пакета выборки равен 20. Если объект удаляется фоновым потоком, который находится в первых 20 строках, все работает нормально. Но если объект находится после первых 20 строк и таблица прокручивается вниз, возникает ошибка «CoreData не может выполнить ошибку». Я попытался восстановить контекст и выполнить повторную выборку frc - все безрезультатно. Примечание: В этом сценарии метод делегата frc "didChangeObject ...." не вызывается для удаления - я предполагаю, что это потому, что рассматриваемый объект не был поврежден в то время (так как он находился за пределами начального диапазона выборки) ). Но по какой-то причине контекст все еще думает, что объект находится вокруг, хотя он был удален из хранилища.
Проблема 3 - Удаление разделов: когда удаление строки приводит к удалению раздела, я получил «недопустимое количество строк в разделе ???» ошибка. Я работал над этим, удалив строку «reloadSection» из раздела NSFetchedResultsChangeMove: и заменив ее на «[tableView insertRowsAtIndexPaths ....». Кажется, это работает, но, опять же, я не уверен, что это лучшее решение.
Любая помощь будет принята с благодарностью. Спасибо!