Как повысить производительность импорта больших данных с помощью основных данных в ios

Я импортирую ~ 18 000 записей различных сущностей, которые связаны друг с другом, из веб-службы при первом запуске приложения iOS. Записи имеют свои собственные уникальные идентификаторы из базы данных в Интернете. Я читал и перечитывал документацию Apple, записи в блогах cimgf, книги Маркуса Зарры по основным данным и снова и снова просматривал серию телеканалов iDeveloper TV по основным данным. Я не могу придумать способ импортировать сущность A, не сохраняя сущности B, C и D в памяти или выполняя дорогостоящие выборки и поддерживая отношения между сущностями.Если бы я не использовал основные данные, я бы мог просто использовать уже установленные уникальные идентификаторы, и импорт был бы намного быстрее.

Если у вас есть предложения, я все слышу.

Мы реализовали эту стратегию в Android, и импорт занимает ~ 2,5 минуты по сравнению с ~ 6 минутами в iOS, где оборудование на разных устройствах сопоставимо. Сокращение времени импорта имеет решающее значение для наших пользователей, поэтому мне не удалось пойти на компромисс в этом вопросе. Заранее спасибо за помощь.

РЕДАКТИРОВАТЬ:

Вот как я сейчас это делаю - я создаю NSOperation, которая создает свой собственный контекст. Сначала я импортирую объекты B, C и D и сохраняю массив для каждого типа объекта. Затем я импортирую сущность A и использую предикаты для фильтрации массивов для сущностей B, C и D, чтобы связать сущность A с соответствующими сущностями в B, C и D. Я пакетно сохраняю контекст с оптимизированными интервалами, которые разные в зависимости от того, какой тип объекта я сейчас импортирую.

Я не просто импортирую в одну таблицу, я импортирую множество таблиц, связанных друг с другом. Итак, если я импортирую объект B, я должен либо сохранить объект B в памяти, либо получить его, когда он мне понадобится, чтобы связать объект B с объектом A. Имеет смысл?

9
задан Ross Chapman 10 January 2012 в 14:49
поделиться