【发布时间】:2019-10-25 12:11:49
【问题描述】:
如何安全地从arrayOfStrings 中解开第一个可选项目,以使用coalescing unwrapping 获得默认值为0 的pounds?
根据下面的代码,我想要的是能够获得5,但如果这是空的,则分配0作为默认值,例如如果measurement是"lb. 8oz."我想要@987654327 @ 得到 0 的值。
在以下示例中,我确实得到了5,但如果我将measurement 从"5lb. 8oz." 更改为"lb. 8oz.",它就会崩溃
let measurement = "5lb. 8oz."
let arrayOfStrings:[String] = measurement.components(separatedBy: "l")
print("Array of Strings: \(arrayOfStrings)") //Output: Array of Strings: ["5", "b. 8oz."]
let pounds = Double(arrayOfStrings[0] ?? "0")
print("Pounds \(pounds!)") //Output: Pounds 5.0
错误:将measurement更改为"lb. 8oz."时
致命错误:在展开可选值时意外发现 nil
仅供参考 - 我正在寻找单行解决方案,我知道如何使用 if let 或 guard。
【问题讨论】:
-
如果您不反对使用 Foundation,那么简单的
let pounds = (measurement as NSString).doubleValue就可以解决问题。