Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios NSManagedObject CoreData中的父子层次结构_Ios_Objective C_Entity Framework_Core Data - Fatal编程技术网

Ios NSManagedObject CoreData中的父子层次结构

Ios NSManagedObject CoreData中的父子层次结构,ios,objective-c,entity-framework,core-data,Ios,Objective C,Entity Framework,Core Data,在xcdatamodeld文件中,我创建了一个Person实体,其中包含firstName、lastName和email字段。然后我创建了一个User实体,其中有一个额外的字段。我将Person设置为User的父实体 然后我使用“编辑器”菜单中的“创建NSManagedObject子类…”选项并为这些实体生成类 现在,当我执行User*User=[[User alloc]init]时,由于某种原因,我无法访问User.firstName或超类Person的其他属性。它说,“在User*类型的对象

在xcdatamodeld文件中,我创建了一个
Person
实体,其中包含
firstName
lastName
email
字段。然后我创建了一个
User
实体,其中有一个额外的字段。我将
Person
设置为
User
的父实体

然后我使用“编辑器”菜单中的“创建NSManagedObject子类…”选项并为这些实体生成类

现在,当我执行
User*User=[[User alloc]init]
时,由于某种原因,我无法访问
User.firstName
或超类
Person
的其他属性。它说,“在User*类型的对象上找不到属性firstName”

当我检查时,生成的
User
类是
NSManagedObject
的子类,而不是
Person
。我认为这是个问题,并将
User
更改为
Person
的子类。代码编译得很好,但在运行时由于以下错误崩溃--


我真的不知道我做错了什么。我认为Xcode应该正确地生成类,我应该能够直接使用它们

我怀疑初始化失败(列表中的第一个错误)是第二个错误(无法识别的选择器)的原因

您需要使用
initWithEntity:insertIntoManagedObjectContext:
而不仅仅是
init
。或者使用
n实体描述

insertNewObjectForEntityForName:inManagedObjectContext:
class方法。

I发现很容易不让父实体粘在XCode GUI中。仅将父实体设置为Person就足以访问user.firstName。您还可以查询user.entity.superEntity.name或其他类似路径以检查继承。是。几小时后我意识到了这一点。这就是问题所在。
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