2

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

可选绑定和仅使用 有什么区别?我的理解是当你使用 ? 解包一个变量,如果它包含一个 nil 值,那么使用它的代码不会运行。(如果不是这种情况,请纠正我。)

4

1 回答 1

10

如果您有一个只希望在变量不是时运行的代码块,则使用可选绑定( ) 。if letnil

仅在访问可选变量的属性/方法时才使用可选链接(the )。?

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

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

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

    // now do something with `image`
}

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

于 2015-11-18T00:07:21.357 回答