Используй лимиты выборки и пакетную выборку, чтобы не загружать ненужные данные в память сразу. Для списков, управляемых UI, используй NSFetchedResultsController для эффективного управления и отображения результатов в таблицах или коллекциях с минимальными затратами.
Выполняй тяжёлые операции с использованием фоновых контекстов управляемых объектов, чтобы главный поток оставался отзывчивым. Используй performBackgroundTask или выделенный контекст приватной очереди для интенсивных операций чтения/записи.
let context = persistentContainer.newBackgroundContext()
context.perform {
// Тяжёлая работа с Core Data здесь
}
Для больших наборов данных предпочитай пакетные вставки, пакетные обновления и пакетные удаления вместо загрузки объектов по одному. Эти операции работают непосредственно на уровне SQL, значительно снижая потребление памяти и время обработки.
Используй механизм faulting в Core Data, который загружает данные объекта только при обращении к ним. Избегай лишней материализации фолтов — обращайся только к тем свойствам и связям, которые действительно нужны.
propertiesToFetchrelationshipKeyPathsForPrefetching только когда связанные данные действительно нужныNSFetchedResultsController для реактивного обновления UINSFetchedResultsController автоматически выполняет пакетные операции на уровне SQL, поэтому это предпочтительный выбор для работы с крупномасштабными вставками, обновлениями и удалениями в Core Data.
Новый — ещё не проверен сообществом
Вы