0

新しいプロジェクトで CoreData をセットアップしようとしていますが、どういうわけか momd ディレクトリの場所を特定できません。

同様の質問を持つスタックオーバーフローの投稿がいくつか見つかりましたが、提供された回答では問題を解決できませんでした。だからここにあります:最初の行が「nil」を返し、2番目の行が実際にmomdディレクトリを見つける原因は何ですか?

NSURL *modelURL = [NSURL fileURLWithPath:
    [[NSBundle mainBundle] pathForResource:@"Project" ofType:@"momd"]
];

NSURL *modelURL = [NSURL fileURLWithPath:
    @"/Users/name/Library/Developer/Xcode/DerivedData/Project-afusjhpzsjyjdbesttxposfzlzrj/Build/Products/Debug/Project.app/Contents/MacOS/Project.momd"
];

編集: Metabble がコメントしたように、メインバンドルが Resources フォルダーの外にあるリソースを見つけることができないのは当然のことです。

しかし、私の問題はまだ存在します。私はいくつかのことを知りました: クラスを生成するために mogenerator を使用しています。(私はこれらの指示を使用しました: http://www.esenciadev.com/2011/05/mogen-and-xcode4-integration/ )。スクリプトは、ビルド ルール プロセス「データ モデル バージョン ファイル」によって呼び出されます。そのビルドルールでは、出力を '${DERIVED_FILES_DIR}/${INPUT_FILE_BASE}.momd' に設定しましたが、それは momd の正しい宛先ではないようです:

error: Could not create bundle folder for versioned model at '/Users/user/Library/Developer/Xcode/DerivedData/Project-afusjhpzsjyjdbesttxposfzlzrj/Build/Products/Debug/Project.app/Contents/MacOS/Project.momd'

ビルド ルールを削除すると、コードは momd を見つけることができます。しかし、それはモジェネレータを無効にします...

ビルドルールで設定する必要がある出力ファイルを知っている人はいますか?

4

2 に答える 2

0

Found my workaround in Mogenerator and Xcode 4

I removed the build rules and am now using a Run Script phase instead:

MODELS_DIR="${PROJECT_DIR}/Resources/Main/CoreData"
DATA_MODEL_PACKAGE="$MODELS_DIR/Project.xcdatamodeld"
CURRENT_VERSION=`/usr/libexec/PlistBuddy "$DATA_MODEL_PACKAGE/.xccurrentversion" -c 'print _XCCurrentVersionName'`

mogenerator --template-var arc=true --model "$DATA_MODEL_PACKAGE/$CURRENT_VERSION" --output-dir "$MODELS_DIR/Sources/Main/Classes"

This works just fine. It is weird though about the build rules. I use those in a different project without any problems...

Thanks Phillip & Metabble !!

于 2012-11-28T18:38:32.600 に答える