我知道这个问题是here,但它只是部分回答了我的问题,我无法对答案发表评论,所以我不得不在这里发帖。
可选绑定与仅使用?之间有什么区别?我的理解是你何时使用?解包变量,如果它包含一个nil值,那么运行它的代码就不会运行。 (如果情况并非如此,请纠正我。)
答案 0 :(得分:7)
如果您的代码块只是在变量不是if let
时才能运行,则使用optional binding(nil
)。
仅在访问可选变量的属性/方法时才使用optional chaining(?
)。
但是有些情况下无法进行可选链接(即您没有访问可选变量的属性/方法,而是将该变量用于其他目的)。例如
// let's assume `data` is a `NSData?` optional
if let imageData = data {
let image = UIImage(data: imageData)
// now do something with `image`
}
我们这样做是因为在这种情况下,我们无法使用可选链接,如果let image = UIImage(data: data!)
为data
,则使用强制解包(例如nil
)会崩溃。