0

正常に動作する単一ビュー アプリケーションを作成しましたが、Xcode がコア データを使用して空のプロジェクトで生成した同じコードをコピーするだけでコア データを追加すると、.

しかし、私のアプリケーションは、Persistent Store Coordinator を作成できないと言ってクラッシュします。すべての例外にブレークポイントを適用すると、この行でアプリケーションがクラッシュすることがわかりました

 _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:self.managedObjectModel];

この前に、Managed Object Model で URL を確認しました。 URL が NULL を返しています。

- (NSManagedObjectModel *)managedObjectModel
{
    if (_managedObjectModel != nil) {
        return _managedObjectModel;
    }
    NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"ProjectName" withExtension:@"momd"];

    NSLog(@"Url:%@",modelURL);
    _managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
    return _managedObjectModel;
}

シングル ビュー アプリケーションにコア データを追加するために必要なことはすべて実行しましたが、このリンクを使用してシングル ビュー アプリケーションにコア データを追加します。

個人的な認識:: URL が NULL を返すので、何か問題があると思います。

助けてください、大変困っています。

期待して感謝

4

1 に答える 1

1

問題を引き起こしているのはあなたの URLForResource:@"ProjectName" だと思います。そのコードブロックを次のものに置き換えてみてください。

- (NSManagedObjectModel *)managedObjectModel
{
if (_managedObjectModel != nil) {
    return _managedObjectModel;
}
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"Model" withExtension:@"momd"];

NSLog(@"Url:%@",modelURL);
_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
return _managedObjectModel;
}

Core Data モデルを作成したときに .xcdatamodeld ファイルの名前を変更しない限り、これは機能します。URLForResource: が何を指すかを確認するには、バンドル内の .xcdatamodeld の名前を確認します。現在のコードを機能させるには、ProjectName.xcdatamodeld という名前にする必要があります。

于 2012-11-12T22:01:03.343 に答える