我创建了一个运行良好的单视图应用程序,但是当我在其中添加核心数据时,只需复制 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。