Optional chaining calls a property or method only when the optional contains an instance.

Read through an optional

optional_chaining.swift
struct Profile {
    let name: String
}

let useProfile = 
let profile: Profile? = useProfile ? Profile(name: "Rin") : nil
let nameLength = profile?.name.count
let label = nameLength == nil ? "missing" : "length=\(nameLength!)"

print("useProfile=\(useProfile)")
print(label)
struct Profile {
    let name: String
}

let useProfile = 
let profile: Profile? = useProfile ? Profile(name: "Rin") : nil
let nameLength = profile?.name.count
let label = nameLength == nil ? "missing" : "length=\(nameLength!)"

print("useProfile=\(useProfile)")
print(label)
chaining Optional chaining returns another optional. If any link is `nil`, the whole expression becomes `nil`.