is和as
类型转换 可以判断实例的类型,也可以将实例看做是其父类或者子类的实例。
类型转换在 Swift 中使用 is
和 as
操作符实现。这两个操作符提供了一种简单达意的方式去检查值的类型或者转换它的类型。
直接上代码,首先定义几个类:
//类型的检査与转换
class Fruit{
let placeOfOriginal: String
init(placeOfOriginal: String){
self.placeOfOriginal = placeOfOriginal
}
}
class Apple:Fruit{
func desCription(){
print("苹果的原产地\(placeOfOriginal)")
}
}
class Orange:Fruit{
func desCription(){
print("橘子的原产地\(placeOfOriginal)")
}
}
func testOne(){
//定义了五个水果
let apple1 = Apple(placeOfOriginal: "北京")
let apple2 = Apple(placeOfOriginal: "上海")
let apple3 = Apple(placeOfOriginal: "深圳")
let orange1 = Orange(placeOfOriginal: "成都")
let orange2 = Orange(placeOfOriginal: "广州")
let basket = [apple1,apple2,apple3,orange1,orange2]
for fruit in basket{
//1:如果想要使用子类Apple和Orange的方法那么久必须使用 as操作符进行类型转换,转换为对应的类型.
if let apple = fruit as? Apple{
apple.desCription()
}else if let orange = fruit as? Orange{
orange.desCription()