是否有一些方法来检查类是否继承自泛型类型?

时间:2017-03-14 11:06:20

标签: swift generics inheritance swift3

是否有一些方法/过程如何检查类是否继承自泛型类型而没有在swift中指定完全通用类型?

以下是一个例子:

class AClass {
}

class BClass<T: UIView>: AClass {
    var a:T?
}

let myClass: AClass = BClass<UIImageView>()

myClass is BClass // false!
myClass is BClass<UIView> // false!
myClass is BClass<UIImageView> // true

我想检查myClass是否为BClass的类型并且可以访问a属性(而不仅仅是检查镜像类型)。

Mirror(reflecting: myClass).subjectType //BClass<UIImageView>.Type

1 个答案:

答案 0 :(得分:0)

您可以使用协议(例如BClassType),使您的泛型类型使用协议。然后,您可以使用myObject is BClassType来检查是否使用您的泛型类型定义了实例。