0

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

但是我的应用程序崩溃了,说它无法创建持久存储协调器。在所有异常上应用断点我开始知道我的应用程序在这条线上崩溃了

 _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。

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

感谢期待

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 回答