1

Я пытаюсь получить 10000 записей из CoreData в UITableView с помощью NSFetchedResultsController и попытаться сделать это как можно быстрее (так как запрос имеет дескриптор сортировки, для получения этой суммы требуется больше времени данных).Извлечение большого количества данных из CoreData с использованием двух NSFetchedResultsController

Я пытаюсь извлечь 100 записей из CoreData с помощью первого и основного NSFetchedResultsController (используется в методах делегата таблицы), который отображается в таблице, а в другой очереди я начал в viewDidAppear другую выборку для всех 10000 записей на auxiliarFRC. После завершения выборки в AuxFRC я назначаю основному FRC AuxFRC, чтобы все записи были перенесены и я перезагрузил таблицу.

Проблема заключается в том, что UITableView застревает в первых загруженных строках до тех пор, пока AuxFRC не завершит выборку, даже если я отправлю функцию executeFetch, и я не могу понять, почему это происходит, или если этот способ неправильный, используется для извлечения 10000 записей и не обновляется, если данные меняются?

+0

Использование NSFetchedResultsController - лучший способ получить большой объем данных. Используете ли вы [request setFetchBatchSize: 20]? Номер 20 - это только пример. –

+0

Да, я установил размер партии для них обоих, а batchLimit - 100 для первого, но это ничего не меняет, даже если первые 100 записей загружены в таблицу, они завиваются до тех пор, пока auxiliar не завершит выборку. .. – sheisd

+0

Возможно, ваш предикат очень медленный. Приведите пример использования предиката. –

ответ

1

Я думаю, проблема была в NSManagedObjectContext - это не потокобезопасно, и я использовал один и тот же для обоих наборов. Я создал копию оригинала и изменил AuxFRC во втором контексте. Это все решило.

0

Хитрость заключается в том, чтобы использовать механизм кэша фурацилины и координату Асинхронной с резьбой дисплея.

Все изложено в this ответа.

+0

Я предполагаю, что проблема была в NSManagedObjectContext, который не является потокобезопасным, и я использовал тот же самый для обоих наборов. Я только что создал копию оригинала и изменил AuxFRC во втором контексте. Надеюсь, это все решает. – sheisd

+0

Если это так или поможет вам в решении, не забудьте проверить ответ выше, как только он будет включен системой. – Mundi