如果一种类型与另一种类型兼容,则进行Swift测试
想象一下以下情况:如果一种类型与另一种类型兼容,则进行Swift测试,swift,Swift,想象一下以下情况: class Car { } class Mercedes: Car { } let aCarType: Any.Type = Mercedes.self 如何测试aCarType中表示的类型是否继承自Car aCarType is Car.Type 当然,返回值总是false 在我的情况下,Objective-C动态是不可能的aCarType填充在我无法控制的代码中。您尝试过这个吗 if let carType = type as? Car.Type { } 您可
class Car {
}
class Mercedes: Car {
}
let aCarType: Any.Type = Mercedes.self
如何测试aCarType
中表示的类型是否继承自Car
aCarType is Car.Type
当然,返回值总是false
在我的情况下,Objective-C动态是不可能的aCarType
填充在我无法控制的代码中。您尝试过这个吗
if let carType = type as? Car.Type {
}
您可以使用
is
操作符测试某个类型是否属于特定的类或子类,这相当于Objective-C中的isKindOfClass
class Car {}
class Mercedes: Car {}
let SLK = Mercedes()
SLK is Car // --> true
SLK is Mercedes // --> true
SLK.dynamicType == Car.self // --> false
SLK.dynamicType == Mercedes.self // --> true
但是,如果要检查特定类而不是其超类,请使用dynamicType
,这相当于Objective-C中的isMemberOfClass
class Car {}
class Mercedes: Car {}
let SLK = Mercedes()
SLK is Car // --> true
SLK is Mercedes // --> true
SLK.dynamicType == Car.self // --> false
SLK.dynamicType == Mercedes.self // --> true
使用
is
运算符和Type
属性可以快速检查一个类是否等于另一个类或另一个类的子类。下面是一个例子:
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为Car。问题中的Type应始终计算为true
。我在最新版本的Xcode 6(Swift 1.2)和Xcode 7(Swift 2)中验证了这一点。您也在处理实例,我需要检查由其元类型表示的两种类型是否兼容。我没有这些类型的实例。在什么情况下,在没有实例的情况下检查类型(以及出于什么目的)?