为什么要使用可选绑定?
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`
}
我们这样做是因为在这种情况下,我们不能使用可选链接,并且如果 data
是 nil
,则使用强制展开(例如 let image = UIImage(data: data!)
)会崩溃。
我知道这个问题是 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`
}
我们这样做是因为在这种情况下,我们不能使用可选链接,并且如果 data
是 nil
,则使用强制展开(例如 let image = UIImage(data: data!)
)会崩溃。