如何从可选变量中获取值,如果可选变量无效,则获取默认值?

时间:2016-11-15 04:49:04

标签: swift

我经常使用这样的代码:

var myName = "Guest"
if let data = dictionary["name"] as? String { myName = data; }
func supply (name: myName)

如何使它像这样(或类似):

guard let myName = dictionary["name"] as? String else { let myName = "Guest" }
func supply (name: myName)

我更喜欢后者,因为它涉及的变量名称较少,而且更直接。我已经尝试了代码,但看起来括号内的let myName = "Guest"仅受括号内的变量范围的限制。如何使它成为可能?感谢。

1 个答案:

答案 0 :(得分:3)

使用nil-coalescing运算符。

let myName = (dictionary["name"] as? String) ?? "Guest"

这会尝试将键"name"的值解包为字符串,如果键"Guest"没有值,或者无法将值转换为"name",则会回退到String analyticId

https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/BasicOperators.html