Где правильное место для инициализации данных в основном хранилище данных? - PullRequest
1 голос
/ 04 февраля 2010

Для приложения iPhone, в которое должна быть вставлена ​​куча данных, прежде чем пользователь сможет выполнить свои действия при первом запуске, где находится правильное место (в коде) для вставки этих данных? Я просматриваю от 700 до 800 записей между несколькими таблицами.

Сначала я попытался сделать это в applicationDidFinishLaunching:. Это работало нормально для iPhone 3gs, но вызвало постоянный сбой при первом запуске 3g. Покопавшись в проблеме, я обнаружил, что на 3g приложение не реагировало достаточно быстро (возможно, потому, что оно было загружено, выгружая множество данных в постоянное хранилище), поэтому ОС убивала его, предполагая, что оно не отвечает.

Чтобы исправить эту проблему, я переместил процесс инициализации данных из appdidfinishlaunching и создал другой поток из первого контроллера представления, который отображается при запуске. Это работает большую часть времени, но время от времени приложение вылетает с ошибкой 134030 в основных данных, которая, согласно справочнику Apple Constants, составляет:

NSPersistentStoreSaveError

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

Эта ошибка появляется при вызове save: для управляемогоObjectContext.

1 Ответ

5 голосов
/ 04 февраля 2010

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

В случае, если это невозможно, можно выполнить импорт в фоновом потоке.

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