Базовые данные iPhone, как часто мне следует вызывать [managedObjectContext save: & error] при выполнении вставки 50k записей? - PullRequest
4 голосов
/ 19 апреля 2010

Я буду время от времени импортировать данные из XML в основные данные. У меня есть около 50 тысяч объектов, которые будут добавлены. Мой вопрос заключается в том, как часто я должен вызывать [managedObjectContext save: & error]. Для каждой новой добавленной сущности, или каждой х сущности, или только в конце импорта 50 тыс.?

В настоящее время я вызываю его для каждой сущности и пробовал делать это примерно каждые 10 КБ, и скорость импорта резко возросла, но после первых 30 КБ он вылетел бы с:

*** Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <NSCFSet: 0x13e760> was mutated while being enumerated.'

Прежде чем я потратил слишком много времени, пытаясь диагностировать, что там происходит, я решил проверить, нормально ли это, чтобы не вызывать save для каждой сущности?

Ограничено ли количество объектов перед вызовом save количеством памяти, используемым этими объектами?

1 Ответ

4 голосов
/ 19 апреля 2010

Не спасайте каждую сущность, которая расточительна и неэффективна.Лучшее место зависит от ваших данных, но оно определенно больше, чем каждая запись, и меньше 50 КБ:)

Я бы рекомендовал начинать с каждого 1 КБ и корректировать его по мере продвижения в разработке приложения.

Что касается той ошибки, которую вы видите, она не имеет ничего общего с сохранением данных.Вы удаляете или добавляете объекты в изменяемый массив во время итерации по нему.Это не допускается по понятным причинам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...