在Swift 2.0中,我如何执行与@property (nonatomic, strong) NSManagedObject*<SomeProtocol> model
等效的操作?
基本上,我试图在我的类上定义一个属性,它必须既是NSManagedObject
的子类,又符合SomeProtocol
(我将调用由两者定义的方法)。
我看到了:https://stackoverflow.com/a/25826948/363789,但我不确定如何将此语法应用于属性定义...
在Swift 2.0中,我如何执行与@property (nonatomic, strong) NSManagedObject*<SomeProtocol> model
等效的操作?
基本上,我试图在我的类上定义一个属性,它必须既是NSManagedObject
的子类,又符合SomeProtocol
(我将调用由两者定义的方法)。
我看到了:https://stackoverflow.com/a/25826948/363789,但我不确定如何将此语法应用于属性定义...
2条答案
按热度按时间ej83mcc01#
雨燕4
在Swift 4中,现在可以使用以下语法实现这一点:
mcdcgff02#
不幸的是,Swift还不支持这种类型组合。
三种合理的解决方案(第三种可能是最好的):
1.您可以使另一个类型具有这些属性,并且所有类型都必须从它继承,才能用作
model
。2.解决这个问题的一个更静态的方法是使用泛型:
注意:你不必关心另一个必须是超类的类型,但是这个解决方案不像以前的解决方案那样动态和抽象。
3.您还可以制定自己的协议,并通过扩展使
NSManagedObject
符合:现在类型是抽象的,可以写成: