为啥使用可选绑定?

Posted

技术标签:

【中文标题】为啥使用可选绑定?【英文标题】:Why use optional binding?为什么使用可选绑定? 【发布时间】:2015-11-17 23:54:40 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

如果您有一个代码块,并且您只想在变量不是nil 时运行,您可以使用optional binding (if let)。

您仅在访问可选变量的属性/方法时使用optional chaining(?)。

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

// 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!))会崩溃。

【讨论】:

以上是关于为啥使用可选绑定?的主要内容,如果未能解决你的问题,请参考以下文章

快速获取条件绑定的错误初始化程序必须具有可选类型,为啥?

无法在可选绑定中使用可选 int "possibleNumber"

为啥必须在可选链接之前使用点运算符 - 在函数之前? [复制]

与 try 的可选绑定?并作为?仍然产生一个可选类型

如何在准备中的 switch 语句中使用可选绑定(segue :)

SwiftUI - 我们如何重新绑定绑定的可选参数?