0

この質問は、他の開発者からも多く寄せられていることを知っています。

コアデータを使用しています。

コードの最後の実行では正常に動作していましたが、今日アプリケーションをビルドして実行すると、このエラーが見つかりました。

キャッチされていない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。理由: 'nil モデルで NSPersistentStoreCoordinator を作成できません'

私のコードに誤ってエラーが発生した可能性があります...

ここにコードがあります...

- (NSManagedObjectContext *)managedObjectContext
{
    if (_managedObjectContext != nil) {
        return _managedObjectContext;
    }

    NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
    if (coordinator != nil) {
        _managedObjectContext = [[NSManagedObjectContext alloc] init];
        [_managedObjectContext setPersistentStoreCoordinator:coordinator];
    }
    return _managedObjectContext;
}

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

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
    if (_persistentStoreCoordinator != nil) {
        return _persistentStoreCoordinator;
    }

    NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"CrudWithInterface.sqlite"];

    NSError *error = nil;
    _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
    if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) {

        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        abort();
    }    

    return _persistentStoreCoordinator;
}


- (NSURL *)applicationDocumentsDirectory
{
    return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
}
4

1 に答える 1

1

managedObjectModel ゲッター内にブレークポイントを配置します。この例外は、_managedObjectModel が nil になる可能性が最も高いことを示しています。modelURL も nil になると思います。

これらの両方に該当する場合は、Core Data モデルがまだ構築中のターゲットの一部であることを確認してください。

于 2013-09-23T20:21:08.540 に答える