Предварительное заполнение базовых данных для приложения только для чтения - PullRequest
2 голосов
/ 12 ноября 2009

Я работаю над приложением, которое отображает данные только для чтения, которые я отправляю. это больше книга.

Это легко с SQLite, но я не удовлетворен производительностью и пытаюсь использовать Core Data.

Проблема с предварительным заполнением Базовых данных заключается в том, что это сложный процесс.

Мой вопрос: Можно ли создать приложение-помощник iphone (для меня, чтобы использовать), который использует ту же модель данных для предварительного заполнения. а затем взять заполненный файл .xcdatamodel и использовать его в моем исходном приложении?

Надеюсь, это имеет смысл:)

1011 * Adham *

Ответы [ 3 ]

3 голосов
/ 12 ноября 2009

Возможно, я сделал это. Я сделал настольное приложение для чтения из файла CSV, используя код здесь:

http://www.mac -developer-network.com / колонки / CoreData / may2009 /

Мне просто нужно было изменить способ работы CSV-части и изменить модель.

  • Я скопировал и вставил свою модель из конструктора моделей в модель iPhone. (Щелкнул по области "сетка", выделил все, скопировал)
  • Затем я взял базу данных sqlite, созданную настольным приложением (нашел ее в разделе «Поддержка приложений» в папке для этого приложения), и поместил в папку ресурсов
  • Я сделал некоторый код для копирования sqlite в папку документов на iPhone (если его там еще не было) при запуске, методом applicationDidLaunch. Возможно, что это в папке ресурсов не годится. Даже если вы используете базу данных только для чтения, Core Data может захотеть что-то записать в нее. Не уверен в этом, хотя ..
  • Я использовал файл sqlite в папке с документами в настройках Core Data.

Рабочий стол и файл sqlite для iPhone Core Data выглядят точно в одном формате. Вы можете перенести один файл sqlite в другое приложение (от iPhone до iPhone), если они имеют одинаковую модель данных. В другом приложении я использовал NSXMLParser для создания файла sqlite Core Data, а затем перенес его в другое приложение, оба на iPhone с помощью симулятора.

3 голосов
/ 12 ноября 2009

Я полагаю, что вы спрашиваете, можете ли вы заранее создать базу данных CoreData и скопировать ее на iPhone. Это правильно?

Эта статья поможет. Вот цитата:

Поэтому я предлагаю следующий пятиступенчатый процесс:

  1. Создайте свои данные в файле, разделенном запятыми, обычно помещая каждую строку данных (сущность) в строку файла и разделяя различные столбцы (его атрибуты) запятыми.
  2. Напишите отдельную программу и скопируйте файл .xcdatamodel из основного проекта.
  3. Напишите код в вашей новой программе, который анализирует файл, разделенный запятыми, и вставляет информацию в постоянное хранилище Core Data, которое должно быть идентично постоянному хранилищу в вашем главном проекте.
  4. Запустить программу в симуляторе
  5. Скопируйте ваши данные из каталога документов симулятора в пакет вашего фактического проекта.
0 голосов
/ 07 ноября 2010

Да, ваш источник данных может быть таким, каким вы хотите. Другие предложения хорошие. Создайте модель управляемого объекта (.xcdatamodel), идентичную той, которую вы хотите использовать в своем приложении. Считайте данные из вашего файла, создайте новый экземпляр вашего управляемого объекта и заполните его из файла. Затем сохраните и погрузитесь в связку в iPhone Simulator и скопируйте его. Это дает дополнительный бонус, заключающийся в том, что вы находитесь именно в том формате, который вам нужен, со всеми полезными метаданными. Скопируйте вашу объектную модель и ваши классы управляемых объектов, и все готово.

Обратите внимание, что если вы действительно намереваетесь сделать его доступным только для чтения и используете его при установке, он будет установлен в комплекте готового приложения (в Applications / {SIGNATURE} /Myapp.app). Если вы намереваетесь отредактировать эту базу данных или позволить пользователю сохранить ее, лучше скопировать ее в каталог Applications / {SIGNATURE} / Documents, где находится ваша база данных пользователя.

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