2013-06-06 4 views
0

В последнее время я много играю с основными данными, и какие ошибки у меня есть, что вы создаете .xcdatamodeld для создания своей базовой структуры, но затем xcode преобразуете его в файл .momdЗагрузите файл .xcdatamodeld и создайте .momd программно

Мой вопрос заключается в следующем: возможно ли программное преобразование, вместо того, чтобы сделать это с помощью xcode?

Скажем, например, мы не сможем скачать файл xcdatamodeld из Интернета в приложении iOS и интерпретировать его и создать базовую базу.

ответ

3

Если вы загружаете комплект xcdatamodeld (это каталог) и распакуете его, вы можете использовать код из моего проекта momcom, чтобы скомпилировать его в .momd. Затем вы можете загрузить это, как и любую другую модель данных. Этот проект по-прежнему несколько экспериментальный, но он хорошо зарекомендовал себя при тестировании. [Обновление: проект не будет работать на iOS, поскольку он использует NSXMLDocument. Если вы хотите попробовать это, вы можете использовать TouchXML, который предназначен для замены на NSXMLDocument. Я не знаю других вариантов компиляции модели Core Data в вашем собственном приложении.]

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

+0

Интересный подход. Жаль, что нет встроенного компилятора: «( – Redwarp

0

Нет, вы не можете загрузить файл xcdatamodeld из Интернета и поместить его в работу. Если вы это сделаете, ваша программа выйдет из строя из-за неправильной модели данных. ваша модель данных должна находиться в главном комплекте, и вам нужно выбрать текущую модель данных. Основные данные поддерживают версию модели и некоторую информацию о вашей модели данных. Даже если вы измените свою модель и не переносите модель, ваша программа выйдет из строя, и вы должны удалить приложение с вашего устройства/симулятора.

Однако вы можете загрузить базу данных .sqlite, но модель данных должна быть одинаковой.

+0

Не совсем. Хотя это не очень хороший подход, у меня есть приложение, которое загружает модель, а также данные sqlite из Интернета. Изменение модели работает нормально. Тем не менее, это приложение было представлено давно (в 2012 году, по-прежнему живут). –

1

Вы можете создать файл momd, начиная с источника xcdatamodeld, используя сценарий momc momc от Apple.

Каталог «источник» xcdatamodeld скомпилирован в каталог развертывания momd, а файл источника xcdatamodel «скомпилирован» в файл развертывания мамы.

(Как объяснено здесь https://developer.apple.com/library/mac/documentation/cocoa/conceptual/coredata/articles/cdUsingMOM.html)

Как использовать скрипт:

  1. Сделайте копию файла xcdatamodeld вы хотите преобразовать. Он будет заменен.
  2. Откройте терминал и перейдите в бункерном Developer папку

    cd /Applications/Xcode.app/Contents/Developer/usr/bin/

  3. Запускаем momc скрипт на файл xcdatamodeld

    Использование: momc источник назначения

    Пример (важно разместить расширения):

    ./momc input.xcdatamodeld result.momd

+0

Интересно! Но, к сожалению, я не думаю, что momc доступен с iPhone ... – Redwarp

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