Могенератор и Xcode 4 - PullRequest
       41

Могенератор и Xcode 4

8 голосов
/ 25 февраля 2011

Я только что установил mogenerator + xmo'd на свою машину для разработки и хотел бы начать с ней играть.Единственные инструкции, которые я действительно мог найти в Интернете, были из предыдущего поста SO , и они не работают с XCode 4 (или, по крайней мере, ⌘ я больше не получаю метаданные и не знаюКак)на

Ответы [ 5 ]

7 голосов
/ 26 июля 2011

Пытаясь найти этот ответ самостоятельно, я нашел Руководство по интеграции MOGenerator и Xcode 4 на esenciadev.com.Это решение не является кнопочной интеграцией, но оно работает.Ссылка содержит подробные инструкции, но обычно вы:

  1. Скопируйте сценарии оболочки в ваш проект
  2. Добавьте правила сборки в свою цель для запуска двух сценариев оболочки

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

Предостережения:

  1. Правило сборки примера предполагает, что вы помещаете скрипты в папку / scripts / file в каталоге вашего проекта.,Когда я проигнорировал эту деталь (создавая папку project , но не папку file ), я получил ошибку сборки.Убедитесь, что правило сборки указывает на местоположение файла скрипта.

  2. В скрипте используется аргумент --base-class.Если ваши классы моделей не являются подклассами пользовательского класса (не NSManagedObject), вы должны удалить этот аргумент из сценария.Например,

mogenerator --model "${INPUT_FILE_PATH}/$curVer" --output-dir "${INPUT_FILE_DIR}/"<del> --base-class $baseClass</del>
5 голосов
/ 11 марта 2011

Теперь, когда выпущен Xcode 4 Посмотрите на страницу Issues для mogenerator

4 голосов
/ 04 мая 2012

После внесения изменений в файл модели я просто запускаю mogenerator вручную из терминала.Используя Xcode 4 и ARC, это помогает:

cd <directory of model file>
mogenerator --model <your model>.xcdatamodeld/<current version>.xcdatamodel --template-var arc=YES

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

1 голос
/ 05 апреля 2012

Я обнаружил, что Скрипт в «Фазах сборки» более надежен, чем «Правила сборки».

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

Помните, что файлы фактической модели данных (.xcdatamodel) содержатся в пакете (.xcdatamodeld), и вам нужно только скомпилировать последнюю модель данных для вашего проекта.

Добавить в скрипт следующее (при необходимости заменить текст в угловых скобках)

MODELS_DIR="${PROJECT_DIR}/<path to your models without trailing slash>"
DATA_MODEL_PACKAGE="$MODELS_DIR/<your model name>.xcdatamodeld"
CURRENT_VERSION=`/usr/libexec/PlistBuddy "$DATA_MODEL_PACKAGE/.xccurrentversion" -c 'print _XCCurrentVersionName'`

# Mogenerator Location
if [ -x /usr/local/bin/mogenerator ]; then
    echo "mogenerator exists in /usr/local/bin path";
    MOGENERATOR_DIR="/usr/local/bin";
elif [ -x /usr/bin/mogenerator ]; then
    echo "mogenerator exists in /usr/bin path";
    MOGENERATOR_DIR="/usr/bin";
else
    echo "mogenerator not found"; exit 1;
fi

$MOGENERATOR_DIR/mogenerator --model "$DATA_MODEL_PACKAGE/$CURRENT_VERSION" --output-dir "$MODELS_DIR/"

Добавьте опции к mogenerator в зависимости от ситуации. --base-class <your base class> и --template-var arc=true являются общими.

0 голосов
/ 06 июня 2013

Случайный совет.Если вы получаете незаконные инструкции: 4, когда вы запускаете mogenerator.Установите его из командной строки:

$ brew update && brew upgrade mogenerator
...