Optional にアクセスする時に
?.
記法で nil
なら実行せず、そうでなければ実行することが簡潔に表現できます。以下のようなクラス定義があった場合(詳細ドキュメントと同じ例です)
class Person {
var residence: Residence?
}
class Residence {
var numberOfRooms = 1
}
let john = Person()
Optional Chaining では以下のように表現可能です。
let roomCount = john.residence?.numberOfRooms
これは以下と等価です。比較すると Optional Chaining で簡潔に表現できていると実感できると思います。
let roomCount: Int?
if let residence = john.residence {
roomCount = residence.numberOfRooms
} else {
roomCount = nil
}


