关键词:swift, 可选链
概述
- 当前可选值可能为nil。
- 当前可选值调用属性、方法、下标。
- 当前可选值有值则调用成功,如果为nil,则调用的结果也会返回nil。
- 多个调用可以连在一起形成一个调用链。
- 可选链返回的总是一个可选值。
- 即使是多层可选链调用,也不会返回“更可选”(如:Float??)的情况。
可选链,就是可选值调用属性、方法、下标,形成一个调用链。
示例
class FileClass {
var name = "uuu"
func showInfo() {
print("这里打印点信息:\(self.name)")
}
subscript(width: Float, height: Float) -> Float {
return width * height
}
}
class HumanClass {
var file: FileClass?
}
var h0 = HumanClass()
用可选链替代强制解析
使用强制解析的话:
如果file为nil,会直接运行时崩掉。
var nameh = h0.file!.name
使用可选链替代:
解析不成功时,会返回nil,而不是出错。
var nameStr = h0.file?.name
通过可选链可以判断属性赋值是否成功
if (h1.file?.name = "666") != nil {
print("赋值成功")
} else {
print("赋值失败")
}
通过可选链可以判断方法是否调用成功
//这里要注意,虽然方法showInfo无返回值,但是可选链返回的是个可选值Void?,而不是Void
if (h1.file?.showInfo()) != nil {
print("方法调用成功")
} else {
print("方法调用失败")
}
通过可选链调用下标
if let ss = h2.file?[3, 5] {
print("调用成功:\(ss)")
} else {
print("调用失败")
}