+entityForName: 找不到实体名称的 NSManagedObjectModel
Posted
技术标签:
【中文标题】+entityForName: 找不到实体名称的 NSManagedObjectModel【英文标题】:+entityForName: could not locate an NSManagedObjectModel for entity name 【发布时间】:2012-03-01 12:15:19 【问题描述】:自从我连接核心数据堆栈并迁移数据库后,我在一个使用核心数据的项目中进展顺利,昨晚我开始在托管对象模型上遇到错误。
我知道它正在做的是试图在这一行中建立一个托管对象上下文
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Question" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
程序在尝试获取 Question 实体时在第一个视图控制器中崩溃。我声明/创建 AppDelegate
- (NSManagedObjectModel *)managedObjectModel
if (managedObjectModel != nil)
return managedObjectModel;
NSString *path = [[NSBundle mainBundle] pathForResource:@"PSQ" ofType:@"momd"];
NSURL *momURL = [NSURL fileURLWithPath:path];
managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:momURL];
//managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain];
return managedObjectModel;
当我在应用程序委托中设置断点时,它在应用程序崩溃之前永远不会到达那里。它首先进入视图控制器。
奇怪的是,自从我的核心数据功能完成并开始工作后,我已经有大约 6 周没有更改它了。
任何想法我可能会做什么?
这开始发生在我为 NSSwitch 添加 NSUSerdefaults 以切换是否显示进入屏幕的选项时。
更新:该应用程序在仅在 iPhone 版本中提到的点崩溃,并且在 iPad 中很好地解决了托管对象问题。 .xib 文件中的哪些内容会有所不同,从而导致managedObjectContext
处的流程出错?
【问题讨论】:
【参考方案1】:好的,解决了。
事实证明,应用程序委托以某种方式在我的 iphone 笔尖中重新接线。我想这就是 Xcode 试图告诉我的什么时候它会在托管对象上下文的应用委托之前访问 mainViewController。
我将类设置回 UIApplication,然后将代理连接到 IB 中的应用代理,一切都很好。
【讨论】:
以上是关于+entityForName: 找不到实体名称的 NSManagedObjectModel的主要内容,如果未能解决你的问题,请参考以下文章
OSX CoreData:仅针对某些实体的问题:+entityForName:在此模型中找不到名为“myEntity”的实体
+entityForName:在此模型中找不到名为“EntityName”的实体
CoreData:+entityForName: nil 不是合法的 NSManagedObjectContext 参数搜索实体名称 'XMPPUserCoreDataStorageObject
iOS:Swift:核心数据:错误:+entityForName:nil 不是搜索实体名称的合法 NSManagedObjectContext 参数