0

Xcode を使用して開発用の新しいマシンをセットアップしました。既存のコア データ プロジェクト (古いマシンでも完全に動作します) を開いてビルドし、実行すると、「nil モデルで NSPersistentStoreCoordinator を作成できません」というメッセージが表示されます。 " エラー。

このエラーに関連するスタックオーバーフローに関する無数の質問を読みました。そのおかげで、iOS がデータベース オブジェクト モデルを処理する方法をよりよく理解できたと感じています。私が知る限り、明らかな問題はありません。

管理対象オブジェクト モデルに標準の初期化方法を使用しています。つまり...

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"project" withExtension:@"momd"];
_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];

...古いマシンでは素敵な NSManagedObjectModel を返していますが、新しいマシンでは nil です。

コンパイルされているバンドルには project.momd フォルダーが含まれており、このフォルダーには project.mom ファイルが含まれています。これは私の古いマシンでコンパイルされた出力とまったく同じですが、実行されるものと実行されないものがあります。非常にイライラします!

私が考えることができる唯一のことは、新しいマシンで正しく設定していない Xcode 内の構成オプションがあるということですが、助けやアドバイスをいただければ幸いです。

* アップデート *

新しいマシンのバンドルには、Project.momd 内に project.mom が含まれています。私の古いマシンでは、Project.mom は Project.momd の中にあり、モデル名は大文字と小文字が区別されると推測しているので、xcode がママを小文字でコンパイルしている理由を解読する必要があります...

バンドル内で手動で project.mom の名前を Project.mom に変更すると、プロジェクトが再コンパイルされるまで一時的ではありますが、実際に問題が解決されます。

4

1 に答える 1

2

xcdatamodeld の「フォルダ」を開き (Finder の「パッケージの内容を表示」を使用)、xcdatamodel ファイルに同じケースがあるかどうかを確認します。理論的には、はおよびにxcdatamodeldコンパイルされます。momdxcdatamodelmom

iOS ファイルシステムでは大文字と小文字が区別されますが、OSX では区別されません (少なくともデフォルトでは)。そのため、異なるマシンで異なる結果が得られる可能性があります。

于 2013-03-15T14:27:27.010 に答える