開発マシンに mogenerator+xmo'd をインストールしたばかりで、それで遊んでみたいと思います。私が実際にオンラインで見つけることができた唯一の指示は、以前の SO 投稿からのものであり、それらは XCode 4 では機能しません (または、少なくとも ⌘もうメタデータを取得しておらず、方法もわかりません)。
物事を開始して実行するにxmod
は、.xcdatamodeld のコメント (どこにいても) を追加する必要があり、それ以降、保存時にクラスが生成/更新されますか?
開発マシンに mogenerator+xmo'd をインストールしたばかりで、それで遊んでみたいと思います。私が実際にオンラインで見つけることができた唯一の指示は、以前の SO 投稿からのものであり、それらは XCode 4 では機能しません (または、少なくとも ⌘もうメタデータを取得しておらず、方法もわかりません)。
物事を開始して実行するにxmod
は、.xcdatamodeld のコメント (どこにいても) を追加する必要があり、それ以降、保存時にクラスが生成/更新されますか?
この答えを自分で見つけようとしているときに、esenciadev.com で MOGenerator と Xcode 4 の統合ガイドを見つけました。このソリューションは、ボタンを押すだけの統合ではありませんが、機能します。リンクには詳細な手順がありますが、通常は次のことを行います。
プロジェクトをビルドすると、スクリプトはプロジェクト ディレクトリ内のすべての .xcdatamodel ファイルに対して MOGenerator を実行します。ビルド後、スクリプトが新しいクラス ファイルを生成する場合は、それらをプロジェクトに手動で追加する必要があります。以降のビルドでは、既存の MO 生成ファイルが記憶されます。
警告:
この例のビルド ルールは、プロジェクト ディレクトリ内の /scripts/ ファイル フォルダーにスクリプトを配置することを前提としています。この詳細を無視すると (ファイルフォルダーではなくプロジェクトフォルダーを作成する)、ビルド エラーが発生しました。ビルド規則がスクリプトのファイルの場所を指していることを確認してください。
スクリプトは--base-class
引数を使用します。モデル クラスがカスタム クラス (NSManagedObject ではない) のサブクラスでない限り、スクリプトからこの引数を削除する必要があります。例えば、
mogenerator --model "${INPUT_FILE_PATH}/$curVer" --output-dir "${INPUT_FILE_DIR}/" --base-class $baseClass
Xcode 4 がリリースされたのでmogeneratorの問題ページを見てみましょう
モデル ファイルに変更を加えた後、ターミナルから mogenerator を手動で実行するだけです。Xcode 4 と ARC を使用すると、次のようになります。
cd <directory of model file>
mogenerator --model <your model>.xcdatamodeld/<current version>.xcdatamodel --template-var arc=YES
ある時点でビルド スクリプトを使用するかもしれませんが、ターミナル アプローチは単純すぎて失敗することはありません。
「ビルドフェーズ」のスクリプトは、「ビルドルール」よりも信頼性が高いことがわかりました。
ターゲットの[ビルドフェーズ]で、下部にある[実行スクリプトの追加]ボタンを選択します。実行スクリプトを一番上にドラッグして、ソースをコンパイルする前に実行されるようにします。
実際のデータモデルファイル(.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
一般的です。