我有以下核心数据实体:
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
,但没有成功。
看起来您的Event
实体类型具有指向User
实体类型的owner
关系。如果是这种情况,则只能为该关系指定一个User
。
SpecialUser
类子类User
类别与核心数据无关。它关心的是实体类型。如果没有相应的实体继承,那么类继承是没有意义的。基本上,类继承和实体继承应该匹配。
使SpecialUser
实体类型继承自User
实体类型,以并行类层次结构。然后,您可以指定一个SpecialUser
作为所有者,它将对Core Data有效。