可选值以??返回nil算子

时间:2019-03-13 10:14:40

标签: swift

我正在尝试将可选字符串转换为Double,但是当我打开包装时,我的值不被获取:

let currentSwimDistanceTravelled = defaults.string(forKey: "SwimTotal") ?? "0.0"

此代码运行后,为currentSwimDistanceTravelled分配了一个字符串值“”,而不是“ 0.0”。

对不起,如果我错过了这里的一些基本知识,但我想到了?是打开可选项的最佳方法。

1 个答案:

答案 0 :(得分:2)

default operator ??的右侧仅在左侧为nil时执行。我认为您的左侧是空字符串""。尝试以下操作:

var currentSwimDistanceTravelled = "0.0"
if let val = defaults.string(forKey: "SwimTotal"), val != "" {
    currentSwimDistanceTravelled = val
}