我有一个Swift类,它充当应用程序中其他类型对象的基类。该类用于数据建模,因此它实现了各种功能来保存和检索存储中的对象。
为了示例,我的类如下所示:
class Base: NSObject {
class func objects() -> [Base] {
return []
}
}
基础的子类如下所示:
class Subclass: Base {
}
这很好用,因为我可以创建子类的实例,然后获取对象数组:
let objects = Subclass.objects()
但是,返回的数组设置为type [Base]
。
有没有办法在子类中不编写任何其他代码的情况下自动Subclass.objects()
返回值[Subclass]
?
我最初的想法是写:
class func objects() -> [Self]
但是,这会导致编译器错误。
您可以使用协议和扩展来实现:
protocol BaseProtocol {}
extension BaseProtocol {
static func objects() -> [Self] {
return []
}
}
class Base: NSObject, BaseProtocol {}
class Subclass: Base {}
let objects = Subclass.objects()
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句