+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 参数

找不到 NSManagedObject 的特定子类

找不到 NSManagedObject 的特定子类