Swift中可选链(Optional Chain)

可选链是一种可以在操作可选值时不会引发应用崩溃的一种链式调用语法。通过可选链,我们可以按照链式调用的方式来请求和操作可选值,如果Optional包含值就进行调用,如果Optional不存在值,就会返回nil。这可以让我们更加优雅地处理Optional。

Optional基础

在Swift中,Optional表示一个变量可以是值或者nil。定义Optional变量需要在类型后加个?。

var name: String?

name = "John"
print(name) // Optional("John")

name = nil
print(name) // nil

为了从Optional取值,需要添加解析:

if let realName = name {
  print(realName) // 解析出John
} else {
  // name为空时进入else
} 

这样的解析语法很繁琐。

使用可选链

可选链可以让我们跳过解析 Optional就直接调用其属性或方法:

class Person {
  var residence: Residence?
}

class Residence {
  var numberOfRooms = 1
}

let john = Person()

print(john.residence?.numberOfRooms) // nil

如果john.residence存在值,就会调用numberOfRooms且打印结果,如果residence为空,整个可选链就会返回nil。

多层可选链

可选链支持多层可选的调用:

swift john.residence?.address?.buildingNumber // 支持多层调用

这样可以避免层层解析Optional的复杂语法。

可选链为处理Swift中的Optional提供了很好的解决方案。它可以让我们写出更简洁、优雅的代码,避免很多不必要的if判断。掌握可选链的使用可以提高我们使用Swift编程的能力。