想象一下以下情况:
class Car {
}
class Mercedes: Car {
}
let aCarType: Any.Type = Mercedes.self
如何测试 aCarType
中表示的类型是否继承自 Car
?
aCarType is Car.Type
当然,返回值总是 false。
在我的情况下,Objective-C 动态是不可能的! aCarType
填充在我无法控制的代码中。
最佳答案
使用 is
运算符和 Type
检查一个类是否等于另一个类 is 的子类的 Swift 方法属性(property)。这是一个例子:
let c: Any.Type = UIButton.self
print(c is UIButton.Type) // true
print(c is UIView.Type) // true
print(c is UILabel.Type) // false
因此,您问题中的语句 aCarType is Car.Type
应始终评估为 true
。我验证了最新版本的 Xcode 6 (Swift 1.2) 和 Xcode 7 (Swift 2) 中确实存在这种情况。
关于Swift 测试一个类型是否与另一个类型兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32536771/