我需要在我的通用基类中传递一个类型.
class SomeBaseClass<T: AnyClass> { // Implementation Goes here }
我收到以下错误:
Inheritance from non-protocol,non-class type ‘AnyClass’ (aka
‘AnyObject.Type’)
理想情况下,我想使用’T’作为特定类型而不是AnyClass,但AnyClass也可以.
谢谢
解决方法
您可以改为:而不是指定T需要成为一个类:
class SomeBaseClass<T> { let type: T.Type init(type: T.Type) { self.type = type } }
如果你计划使用T.Type很多,可能值得使用typealias:
class SomeBaseClass<T> { typealias Type = T.Type let type: Type ... }
一些示例用法:
let base = SomeBaseClass(type: String.self)
此方法的优点是T.Type可以表示结构和枚举,以及类.