为什么SWIFT打印“可选(...)

时间:2015-07-25 04:00:42

标签: iphone swift optional

如果以下代码运行

var airports = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]

print(airports["YYZ"])

为什么控制台打印

  

可选(“Toronto Pearson”)

为什么打印Optional(withValue)而不仅仅是值?

为什么我需要在控制台中知道?

1 个答案:

答案 0 :(得分:1)

Swift对可能失败的操作有optional types。像airports["XYZ"]这样的数组索引就是一个例子。如果找不到索引,它将失败。这取代了nil类型或例外。

解包可选类型的最简单方法是使用感叹号,如下所示:airports["XYZ"]!。如果值为nil,这将导致恐慌。

Here's some further reading.

你可以在Swift中链接选项类型的方法,如果左边的值是nil,它会提前退出到nil而不调用方法。当您在值和方法之间插入问号时,它会起作用:airports["XYZ"]?.Method()。由于值为nil,因此永远不会调用Method()。这允许您延迟决定是否处理可选类型,并且可以稍微清理您的代码。

要安全使用可选类型而不恐慌,只需使用if语句提供备用路径。

if let x:String? = airports["XYZ"] {
    println(x!)
} else {
    println("airport not found")
}