在xcdatamodeld文件中,我创建了一个Person
实体,其中firstName
,lastName
和email
字段。然后我创建了一个User
实体,其中有一个额外的字段。我将Person
设置为User
的母公司。NSManagedObject CoreData中的父子层次
然后,我使用'创建NSManagedObject子类...'选项从'编辑'菜单,并为这些实体生成类。
现在当我做了User* user = [[User alloc] init]
时,出于某种原因,我无法访问user.firstName
或超类Person
的其他属性。它说,
当我检查时,产生User
类是的NSManagedObject
而不是Person
子类“属性的firstName是不是类型的用户*的对象发现”。我认为这是一个问题,并将User
更改为Person
的子类。代码编译正常,但在运行时崩溃此错误 -
2014-11-05 20:24:14.142 MyApp[15131:3332646] CoreData: error: Failed to call designated initializer on NSManagedObject class 'User'
2014-11-05 20:24:14.142 MyApp[15131:3332646] -[User setFirstName:]: unrecognized selector sent to instance 0x7fee5a436b90
我真的不知道我在做什么错在这里。我认为Xcode应该正确地生成类,我应该能够使用它们开箱即用。
我,[和其他人](http://stackoverflow.com/questions/25703485/coredata-abstract-entity-with-relationship/)发现它很容易在XCode GUI中没有父母实体。简单地将父实体设置为Person应该足以访问user.firstName。您还可以查询user.entity.superEntity.name或其他此类路径来检查继承。 – stevesliva 2014-11-06 05:18:00