Я обнаружил, что Скрипт в «Фазах сборки» более надежен, чем «Правила сборки».
В разделе «Этапы сборки» для своей цели, нажмите кнопку внизу, чтобы «Добавить скрипт запуска». Перетащите скрипт запуска наверх, чтобы он выполнялся перед компиляцией исходных текстов.
Помните, что файлы фактической модели данных (.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
являются общими.