我有一个Offer类(NSManagedObject子类),我想用它来处理为购买而提供的商品。每个报价的一方是买方,另一方是产品。还有一个价格。然而,这些可以成为买家的类实例具有完全不同的谱系,并且很可能将具有不同的父类,一直到NSManagedObject。产品也是如此。
因此我不想制作这些项目将继承的“买方”和“产品”抽象类。我更倾向于让协议“可购买”和“可购买”,并让课程实现他们的购买方式和购买方式。不幸的是,似乎NSManagedObjects中的关系不允许您按协议指定类。
有什么方法吗?有人能让我直截了当吗?罗布
答案 0 :(得分:2)
您无法分配协议,因为上下文必须实例化实际对象,协议不会告诉上下文要实例化的类。例如。如果你告诉上下文插入一个Buyer
协议实际上会创建什么子类?
听起来你真正需要的是子实体。您将为Buyer
和Product
创建抽象实体,然后将其与Offer
相关联。然后,Buyer
或Product
的每个变体都会创建一个子实体。实体不必添加新属性,只能使用不同的名称。这样,Offer
对象将接受其Buyer
关系中buyer
的任何子实体以及Product
关系中product
的任何子实体。
然后为每个子实体分配不同的类以自定义实体行为。
这里的关键是,类的继承无论如何都不必与实体继承并行。您的类树可以与实体树完全不同。只要个别类映射到单个实体,它就会起作用。
抽象实体本身就是协议定义。它们定义了实体必须具有的接口,但它们自己不实现任何东西。
答案 1 :(得分:0)
我是新手,但我不认为你所追求的是可能的。