8

開発マシンに mogenerator+xmo'd をインストールしたばかりで、それで遊んでみたいと思います。私が実際にオンラインで見つけることができた唯一の指示は、以前の SO 投稿からのものであり、それらは XCode 4 では機能しません (または、少なくとも ⌘もうメタデータを取得しておらず、方法もわかりません)。

物事を開始して実行するにxmodは、.xcdatamodeld のコメント (どこにいても) を追加する必要があり、それ以降、保存時にクラスが生成/更新されますか?

4

5 に答える 5

7

この答えを自分で見つけようとしているときに、esenciadev.com で MOGenerator と Xcode 4 の統合ガイドを見つけました。このソリューションは、ボタンを押すだけの統合ではありませんが、機能します。リンクには詳細な手順がありますが、通常は次のことを行います。

  1. シェル スクリプトをプロジェクトにコピーします。
  2. ビルド ルールをターゲットに追加して、2 つのシェル スクリプトを実行します。

プロジェクトをビルドすると、スクリプトはプロジェクト ディレクトリ内のすべての .xcdatamodel ファイルに対して MOGenerator を実行します。ビルド後、スクリプトが新しいクラス ファイルを生成する場合は、それらをプロジェクトに手動で追加する必要があります。以降のビルドでは、既存の MO 生成ファイルが記憶されます。

警告:

  1. この例のビルド ルールは、プロジェクト ディレクトリ内の /scripts/ ファイル フォルダーにスクリプトを配置することを前提としています。この詳細を無視すると (ファイルフォルダーではなくプロジェクトフォルダーを作成する)、ビルド エラーが発生しました。ビルド規則がスクリプトのファイルの場所を指していることを確認してください。

  2. スクリプトは--base-class引数を使用します。モデル クラスがカスタム クラス (NSManagedObject ではない) のサブクラスでない限り、スクリプトからこの引数を削除する必要があります。例えば、

mogenerator --model "${INPUT_FILE_PATH}/$curVer" --output-dir "${INPUT_FILE_DIR}/" --base-class $baseClass
于 2011-07-26T04:12:47.593 に答える
5

Xcode 4 がリリースされたのでmogeneratorの問題ページを見てみましょう

于 2011-03-11T05:11:09.490 に答える
4

モデル ファイルに変更を加えた後、ターミナルから mogenerator を手動で実行するだけです。Xcode 4 と ARC を使用すると、次のようになります。

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

ある時点でビルド スクリプトを使用するかもしれませんが、ターミナル アプローチは単純すぎて失敗することはありません。

于 2012-05-04T19:07:35.967 に答える
1

「ビルドフェーズ」のスクリプトは、「ビルドルール」よりも信頼性が高いことがわかりました。

ターゲットの[ビルドフェーズ]で、下部にある[実行スクリプトの追加]ボタンを選択します。実行スクリプトを一番上にドラッグして、ソースをコンパイルする前に実行されるようにします。

実際のデータモデルファイル(.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一般的です。

于 2012-04-05T05:29:38.730 に答える