我有以下coredata实体:
Event, User, SpecialUser
,SpecialUser
是User
的子类,Event.owner
与User
之间存在关系
我遇到了我想说的情况
event.owner = specialUser
,但这会引发错误
'NSInvalidArgumentException', reason: 'Unacceptable type of value for to-one relationship: property = "owner"; desired type = User; given type = SpecialUser;
我在作业期间也尝试过施法,例如event.owner = (User *) specialUser
,但无济于事。
答案 0 :(得分:3)
看起来您的Event
实体类型的owner
关系指向User
实体类型。如果是这种情况,您只能为该关系分配User
。
SpecialUser
类的子类User
类与核心数据无关。它关心的是实体类型。如果没有相应的实体继承,则类继承是没有意义的。基本上,您的类继承和实体继承应匹配。
使SpecialUser
实体类型从User
实体类型继承,以与类层次结构并行。然后,您可以指定SpecialUser
作为所有者,它将对Core Data有效。