Z
ZHANK
编程在线教程Swift 教程可选链与 nil 安全
可选类型

可选链与 nil 安全

?. 可选链访问、返回值自动包装为可选、赋值/方法调用链

可选链与 nil 安全

?. 可选链让你在一行中安全访问深层嵌套的属性——任何一个环节为 nil 都会短路返回 nil。

学完本章你将: 掌握 ?. 可选链访问、自动包装、链式赋值。


可选链访问

swift
class Person {
    var residence: Residence?
}

class Residence {
    var address: Address?
}

class Address {
    var street: String
    init(street: String) { self.street = street }
}

let person = Person()

// ❌ 多层 if let
if let residence = person.residence {
    if let address = residence.address {
        print(address.street)
    }
}

// ✅ 可选链
if let street = person.residence?.address?.street {
    print(street)
}
// 任何一个环节为 nil——整个返回 nil

// 配合 ??
let street = person.residence?.address?.street ?? "未知地址"

可选链赋值

swift
// 只有链上所有值都存在时才赋值
person.residence?.address?.street = "长安街"
// residence 是 nil——赋值不执行,但也不报错

方法调用的可选链

swift
// 如果方法不存在,整个调用返回 nil
let success = person.residence?.doSomething()
// success 类型是 Bool?——residence 为 nil 时返回 nil