我如何使用`coalescing unwrapping安全地用默认值解开一个可选值-不起作用-Swift

问题描述 投票:0回答:2

如何安全地从arrayOfStrings中解开第一个可选项目以使用pounds仅获得默认值为0的coalescing unwrapping

基于下面的代码,我想要的是能够获取5,但是如果该值为空,则将0设置为默认值,例如,如果measurement"lb. 8oz.",我想要pounds得到值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

FYI-我正在寻找单行解决方案,我知道如何使用if letguard

swift optional unwrap
2个回答
1
投票

您可以解开数组的访问权限[[和转换为Double的转换

let pounds = Double(arrayOfStrings.first ?? "0") ?? 0.0

0
投票
let pounds = Double(arrayOfStrings[0]) ?? 0.0 print("Pounds \(pounds)")
为我工作。
© www.soinside.com 2019 - 2024. All rights reserved.