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

时间:2012-11-12 12:20:41

标签: objective-c cocoa-touch core-data ios6 xcode4.5

我创建了一个运行正常的单个视图应用程序,但是当我在其中添加核心数据时,只需复制Xcode使用Core Data在Empty Project中生成的相同代码。

但我的应用程序崩溃时说它无法创建持久存储协调器。 在所有异常中应用断点我知道我的应用程序在此行崩溃

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

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

我已经完成了在单个视图应用程序中添加核心数据所需的所有必要事项,但使用此链接Add Core data in Single View Application

个人感知 ::我认为网址出错了,因为它返回了NULL。

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

感谢您的期待

1 个答案:

答案 0 :(得分: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。