应用程序崩溃,因为它无法使用 nil 模型创建 NSPersistentStoreCoordinator



我创建了一个运行良好的单视图应用程序,但是当我在其中添加核心数据时,只需复制 Xcode 使用核心数据在空项目中生成的相同代码即可。

但是我的应用程序崩溃了,因为它无法创建持久存储协调器。对所有异常应用断点 我知道我的应用程序在此行崩溃

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

在此之前,我已经验证了托管对象模型中的 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。

请帮助我,我遇到了很大的麻烦。

期待中的感谢

我相信

是你的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;
}

除非您在创建核心数据模型时重命名了 .xcdatamodeld 文件,否则这将起作用。要检查 URLForResource: 应该指向什么,请检查捆绑包中 .xcdatamodeld 的名称。为了使当前代码正常工作,必须将其称为ProjectName.xcdatamodeld。

相关内容

最新更新