2013-02-21 2 views
0

У меня возникла проблема с импортированием моих данных при запуске приложения. При первом запуске я создаю много основных объектов данных (почти 400 объектов). Проблема в том, что, когда я пытаюсь использовать приложение в симуляторе, все кажется правильным, но на устройстве мне приходится ждать много времени из-за моего импорта и, возможно, сбоя приложения (не каждый раз).Импорт основных данных при первом запуске приложения

У кого-нибудь была эта проблема? Должен ли я попытаться сделать мой скрипт импорта более эффективным? Существует ли какая-то хорошая практика импорта данных с помощью Core Data?

Большое спасибо!

+1

Некоторый код поможет. – Rakesh

+0

Вы используете все это в основной теме? –

+0

Я создаю и вставляю около 1000 объектов при первом запуске, это занимает менее 2 секунд. Но это сильно зависит от того, насколько велики объекты и как часто вам приходится сохранять контекст. Оптимизация модели данных помогает. Использование высоко нормированной DB-модели со многими отношениями, скорее всего, будет очень плохо работать в ios. –

ответ

-1

Обычно я связываю файл sqlite, который имеет начальные данные в самом приложении. При запуске приложения проверьте, существует ли файл db, если он не скопирован из пакета в каталог документов или где бы то ни было.

Более быстрое время запуска за счет увеличения размера приложения.

+0

Я не думаю, что это хорошая стратегия. Что делать, если Apple изменит свои внутренние данные Core Data <-> SQLite? Ваше приложение в магазине будет повреждено, пока вы не заметите и не получите обновление. – occulus

+0

Целью Core Data не манипулировать данными непосредственно в файле SQLite. Core Data - это ORM, который делает промежуточное звено между базой данных SQLite и объектами Objective-C. – Vinestro

+0

Если яблоко сделало несовместимые изменения в их формате .sqlite, все приложения сломаются. Apple вряд ли это сделает. –

0

Обычно я использую ту же технику, что и Гопал. Помимо размера файла, единственным недостатком, с которым я столкнулся, является то, что вы находите ошибки в отправленных данных. Если это произойдет, и вам нужно исправить данные, вам нужно определить, существуют ли плохие данные в пользовательских данных и обновить их. Я рассмотрел это при запуске, проверив значение didUpdateToVersionX в NSUserDefaults для приложения, запросив хранилище данных пользователя, чтобы найти ошибочные записи, обновить соответствующие объекты, сохранить хранилище и установить флаг предпочтения.

Являются ли ваши данные семян предназначаемыми для редактирования или чтения? Если он доступен только для чтения, вы должны иметь отдельные хранилища для чтения и записи, доступные для записи (первый в комплекте приложений, последний в папке «Документы»). Маркус Зарра сделал nice writeup of this technique в ответ на другой вопрос. В зависимости от вашей настройки, это может потребовать немного дополнительной работы. Я хотел переключить вышеупомянутое приложение на использование этой техники, но у меня никогда не было шанса.

+0

. Мои данные должны быть доступны только для чтения. Приложение используется только для чтения информации – Vinestro

Смежные вопросы