Objective c NSManagedObject关系以符合协议的类为目标

Objective c NSManagedObject关系以符合协议的类为目标,objective-c,cocoa,core-data,Objective C,Cocoa,Core Data,我有一个Offer类(NSManagedObject子类),我想用它来处理为购买提供的服务。每个报价的一边是买家,另一边是产品。还有一个代价。但是,这些类实例可能具有非常不同的血统,并且很可能在返回NSManagedObject的过程中具有不同的父类。产品也是如此 正因为如此,我不想让“买方”和“产品”抽象类继承这些项目。我更愿意让协议“可购买”和“可购买”,让类实现如何购买和如何购买。不幸的是,NSManagedObjects中的关系似乎不允许您通过它们的协议指定类 有办法吗?有人能帮我澄清一

我有一个Offer类(NSManagedObject子类),我想用它来处理为购买提供的服务。每个报价的一边是买家,另一边是产品。还有一个代价。但是,这些类实例可能具有非常不同的血统,并且很可能在返回NSManagedObject的过程中具有不同的父类。产品也是如此

正因为如此,我不想让“买方”和“产品”抽象类继承这些项目。我更愿意让协议“可购买”和“可购买”,让类实现如何购买和如何购买。不幸的是,NSManagedObjects中的关系似乎不允许您通过它们的协议指定类


有办法吗?有人能帮我澄清一下吗?Rob

我是个新手,但我不认为你所追求的是可能的。

你不能分配协议,因为上下文必须实例化一个实际的对象,协议不能告诉上下文实例化哪个类。例如,如果您告诉上下文插入一个
Buyer
协议,那么实际会创建哪个子类

听起来你真正需要的是子实体。您将为
买家
产品
创建抽象实体,然后将两者关联到
报价
。然后,为
买方
产品
的每个变体创建一个子实体。实体不必添加新的属性,它们可以有不同的名称。这样,
要约
对象将接受其
买方
关系中的
买方
的任何子实体,以及其
产品
关系中的
产品
的任何子实体

然后为每个子实体指定不同的类以自定义实体行为

这里的关键是类的继承不必与实体继承并行。类树可以与实体树完全不同。只要单个类映射到单个实体上,它就可以工作

抽象实体本身就是协议定义。它们定义了实体必须拥有但不实现任何东西的接口