为什么要使用可选绑定?

Why use optional binding?

我知道这个问题是 here,但它只部分回答了我的问题,我无法对答案发表评论,所以我不得不 post 在这里。

可选绑定和简单地使用有什么区别?。我的理解是你什么时候使用?解包一个变量,如果它包含一个 nil 值,那么使用它的代码不是 运行。 (如果不是这样,请纠正我。)

如果您有一段代码,如果变量不是 nil,您只想 运行,则使用 optional binding (if let)。

您仅在访问可选变量的 properties/methods 时使用 optional chaining?)。

但在某些情况下,可选链接是不可能的(即您没有访问可选变量的 property/method,而是将该变量用于其他目的)。例如

// let's assume `data` is a `NSData?` optional

if let imageData = data {
    let image = UIImage(data: imageData)

    // now do something with `image`
}

我们这样做是因为在这种情况下,我们不能使用可选链接,并且如果 datanil,则使用强制展开(例如 let image = UIImage(data: data!))会崩溃。