'NSInternalInconsistencyException',原因:“Foo”不是NSManagedObject的子类

时间:2012-05-18 17:08:11

标签: iphone core-data

好的,这就是我得到的错误

   *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '"Place" is not a subclass of NSManagedObject.'

我认为这意味着'Place'没有作为实体添加到核心数据模型中???但它如下图所示。

我猜我的假设是不正确的,所以任何帮助或想法都会很好。

我很确定这是导致它的那条线:

  NSManagedObject* place = [NSEntityDescription
                               insertNewObjectForEntityForName:@"Place" 
                               inManagedObjectContext:context];

4 个答案:

答案 0 :(得分:23)

如果你没有使用自定义类(没有Place。[hm]),听起来好像你没有,请检查实体标签,并确保 Class < / strong>名称为空(= NSManagedObject ) - 不是放置

答案 1 :(得分:12)

我对名为Message和Connection的类有同样的问题。使用MessageUI库添加电子邮件工具后出现错误。我认为发生冲突是因为库将具有名为Message和Connection的类,因此它们不被视为NSManagedObject的子类。通过前缀(在我的情况下使用X)更改其名称使实体成为唯一的。我打算将来为我的所有实体添加前缀,以便产生冲突的可能性更小。

答案 2 :(得分:0)

遇到此类错误时要做的第一件事是验证实体的类名:

  • 打开XCDataModel
  • 选择您的实体
  • 打开右侧窗格Utilities
  • 点击&#34;显示数据模型检查员&#34;按钮
  • 验证班级名称,使其与您生成的模型同步

希望这有帮助!

答案 3 :(得分:-1)

解决此问题的另一种方法是确实使用NSManagedObject子类(推荐)。

Place *place = [NSEntityDescription
                           insertNewObjectForEntityForName:@"Place" 
                           inManagedObjectContext:context];