gpt4 book ai didi

objective-c - NSManagedObject 关系针对符合协议(protocol)的类

转载 作者:行者123 更新时间:2023-12-03 17:07:36 24 4
gpt4 key购买 nike

我有一个 Offer 类(NSManagedObject 子类),我想用它来处理购买优惠。每个报价的一侧是买家,另一侧是产品。还有一个价格。然而,这些可以作为购买者的类实例具有相当不同的血统,并且很可能具有不同的父类,一直到 NSManagedObject。产品也是如此。

因此,我不想创建这些项目继承的“Buyer”和“Product”抽象类。我宁愿只拥有“可购买”和“可购买”的协议(protocol),并让类(class)实现它们的购买方式和购买方式。不幸的是,似乎 NSManagedObjects 中的关系不允许您通过其协议(protocol)指定类。

有办法解决这个问题吗?有人可以纠正我吗?罗布

最佳答案

您无法分配协议(protocol),因为上下文必须实例化实际对象,而协议(protocol)不会告诉上下文要实例化哪个类。例如。如果您告诉上下文插入买家协议(protocol),实际上会创建什么子类?

听起来您真正需要的是子实体。您将为BuyerProduct 创建抽象实体,然后将它们与Offer 相关联。然后,为 BuyerProduct 的每个变体创建一个子实体。这些实体不必添加新属性,它们只需具有不同的名称即可。这样,Offer 对象将接受其 buyer 关系中 Buyer 的任何子实体以及 Product 关系中的 Product 的任何子实体。它的产品关系。

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

对您来说,关键是类的继承不必与实体继承平行。您的类树可以与实体树完全不同。只要单个类映射到单个实体,它就可以工作。

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

关于objective-c - NSManagedObject 关系针对符合协议(protocol)的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3692308/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com