10

好的,这是我得到的错误

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

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

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

我很确定这是导致它的原因:

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

4 回答 4

23

如果您没有使用自定义类(没有 Place.[hm]),听起来好像不是,请检查Entity选项卡,并确保Class name 为空白(= NSManagedObject) - 而不是Place

于 2012-05-18T19:58:34.430 回答
12

我对名为 Message 和 Connection 的类也有同样的问题。该错误只是在使用 MessageUI 库添加电子邮件工具后出现。我相信发生冲突是因为库将具有名为 Message 和 Connection 的类,因此它们不被视为 NSManagedObject 的子类。通过前缀更改它们的名称(在我的情况下使用 X)使实体独一无二。我打算在未来给我所有的实体加上前缀,以减少发生冲突的机会。

于 2013-02-24T21:51:11.293 回答
0

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

  • 打开 XCDataModel
  • 选择您的实体
  • 打开右窗格实用程序
  • 单击“显示数据模型检查器”按钮
  • 验证类名,使其与您生成的模型同步

希望这可以帮助 !

于 2017-05-18T20:09:15.863 回答
-1

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

Place *place = [NSEntityDescription
                           insertNewObjectForEntityForName:@"Place" 
                           inManagedObjectContext:context];
于 2012-05-18T20:23:33.930 回答