Я использую основные данные в своем приложении для хранения объектов, которые могут иметь до 50 тыс. Объектов или более. У меня это сопряжено с NSFetchedResultsController в виде таблицы. Вид таблицы отлично работает из-за повторного использования ячеек, однако моя самая большая проблема заключается в том, чтобы охарактеризовать фактическую базу данных для получения набора данных.Как эффективно работать с большими наборами данных в Core Data?
Когда я впервые загружаю представление таблицы, мне нужны все результаты из db. Я использую запрос выборки по умолчанию с одним дескриптором сортировки, и я установил пакетный размер в 1000. На iPad 2 этот запрос занимает 15 секунд, чтобы закончить! Я также должен запустить этот запрос после того, как поиск был отменен, поэтому он делает приложение непригодным. Мое предположение заключается в том, что CD по-прежнему должен разрешать все эти результаты или настраивать разделы или что-то в этом роде, я действительно понятия не имею, но просто использование batchSize не помогает? Содержимое также очень динамично в том смысле, что новые строки всегда добавляются, изменяются порядок сортировки и т. Д., Поэтому кеширование имеет ограниченную выгоду.
Теперь я думаю, что лучшим вариантом было бы использовать fetchLimit в fetchRequest, а затем реализовать некоторый базовый пейджинг. Когда представление таблицы прокручивается до конца, введите следующую «страницу» результатов? Моя единственная проблема с этим подходом заключается в том, что я теряю sectionIndex, и я не думаю об этом.
У кого-нибудь есть идеи или проблемы с этим вопросом?
Зачем вам нужен весь набор данных? – Wain