【问题标题】:NSPersistentStoreCoordinator with a nil model error?NSPersistentStoreCoordinator 模型错误为零?
【发布时间】:2013-09-23 19:44:49
【问题描述】:

我知道这个问题也被其他开发者问过很多次。

我正在使用核心数据。

在上次运行代码时它工作正常,但今天当我构建并运行应用程序时,我发现了这个错误。

由于未捕获的异常“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];
}

【问题讨论】:

    标签: iphone ios objective-c core-data


    【解决方案1】:

    在 managedObjectModel getter 中放置一个断点。该异常表明 _managedObjectModel 很可能为零。我怀疑 modelURL 也将为零。

    如果这两件事都成立,请检查以确保您的核心数据模型仍然是您正在构建的目标的一部分。

    【讨论】:

    • 抱歉,我无法帮助您解决这个特殊问题。如果您需要一些有关 iOS 和 XCode 的学习资料,这里有很多很棒的在线资源可供您使用。我强烈推荐斯坦福大学的 Paul Hegarty 的课程。它在 iTunesU 上免费。
    猜你喜欢
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    • 2012-03-02
    • 1970-01-01
    • 2021-02-04
    • 1970-01-01
    • 1970-01-01
    • 2019-12-06
    相关资源
    最近更新 更多