0

私はCore-Dataを初めて使用するので、これを手伝ってください。私はこの例外を持っています

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '+entityForName: could not locate an entity named 'ModelForProfile' in this model.'

インターネットで入手可能なほとんどすべての回答を検索し、スタックで入手可能なリンクを閲覧しましたが、何も理解していないようです。

いくつか (5 ~ 7) の異なるビューと、各ビューに保存ボタンがあります。1.) 私は Core-Data を使用しています Data.MI を保存するために正しいことをしていますか?? 2.) ビューごとに異なるモデルが必要ですか?? 3.) 最初は例外があり、Web を閲覧したときに、次の方法を少し変更する必要があることがわかりました。

- (NSManagedObjectModel *)managedObjectModel
{
    if (__managedObjectModel != nil) {
        return __managedObjectModel;
    }
    NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"saveButtonForBasicInfo" withExtension:@"momd"];
    //NSURL *modelURL1 = [[NSBundle mainBundle] URLForResource:@"saveButtonForProfile" withExtension:@"momd"];

    __managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
  //  __managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL1];

    return __managedObjectModel;
}

「 saveButtonForBasicInfo 」は、最初のモデル (First View) の xcDataModel です。

そしてそれは完璧に機能しました。しかし、このエラーが発生したとき、いくつかの行を追加しようとしました。コメントされた行を見ることができれば。

これで私を助けてください。私は少し混乱しています。

ありがとうございました、

よろしくお願いします。

4

1 に答える 1

1

いくつかの基本的な概念:

通常、アプリには NSManagedObjectModelが1 つしかありません。エンティティ (オブジェクトなど) とその属性 (プロパティなど) を記述します。

このモデルはアプリの起動時に初期化されるため、再度アクセスする必要はありません。これは通常、NSManagedObjectContext と NSManagedObjectStoreCoordinator も含む「コア データ スタック」を設定する AppDelegate で発生します。

各ビューは、モデルとそのデータにアクセスするために NSManagedObjectContext を使用する必要があります。ビューごとに異なるモデルが必要だというあなたの提案は、かなり的外れです。

さまざまなものに意味のある名前を付ける必要があります。「saveButtonForBasicInfo」は、モデルの意味のある名前ではありません。「ウィジェット」などと呼んでください。

同様に、エンティティは、「ユーザー」、「予定」、「プロジェクト」、「場所」、「クラス」など、つまり実際のものを表すものである必要があります。「ModelForProfile」は非常に不適切なエンティティ名です。

于 2013-08-23T09:55:11.887 に答える