针对符合协议的类的NSManagedObject关系

时间:2010-09-11 19:17:47

标签: objective-c cocoa core-data

我有一个Offer类(NSManagedObject子类),我想用它来处理为购买而提供的商品。每个报价的一方是买方,另一方是产品。还有一个价格。然而,这些可以成为买家的类实例具有完全不同的谱系,并且很可能将具有不同的父类,一直到NSManagedObject。产品也是如此。

因此我不想制作这些项目将继承的“买方”和“产品”抽象类。我更倾向于让协议“可购买”和“可购买”,并让课程实现他们的购买方式和购买方式。不幸的是,似乎NSManagedObjects中的关系不允许您按协议指定类。

有什么方法吗?有人能让我直截了当吗?罗布

2 个答案:

答案 0 :(得分:2)

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

听起来你真正需要的是子实体。您将为BuyerProduct创建抽象实体,然后将其与Offer相关联。然后,BuyerProduct的每个变体都会创建一个子实体。实体不必添加新属性,只能使用不同的名称。这样,Offer对象将接受其Buyer关系中buyer的任何子实体以及Product关系中product的任何子实体。

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

这里的关键是,类的继承无论如何都不必与实体继承并行。您的类树可以与实体树完全不同。只要个别类映射到单个实体,它就会起作用。

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

答案 1 :(得分:0)

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