Swift的可选参数和double的默认值

时间:2018-12-20 21:34:16

标签: swift optional

我正在尝试根据可选响应中的double值设置文本提供程序的值。我觉得应该有一个更短的方法来执行此操作,但是当我尝试使用默认值时,它坚持要求默认值必须为double,并且我希望使用字符串来替换它。

伪代码:

If we have a current value 
    use it
 else
    use "--"

我认为可以的

let currentValue = uvProduct.currentValue()?.value
currentTextProvider = CLKSimpleTextProvider(text: String( currentValue ?? "--" ))

当前尝试

let currentValue = uvProduct.currentValue()?.value
let currentTextProvider : CLKSimpleTextProvider

if (currentValue != nil){
    currentTextProvider = CLKSimpleTextProvider(text: String( currentValue! ))
} else {
    currentTextProvider = CLKSimpleTextProvider(text: "--")
}

1 个答案:

答案 0 :(得分:6)

这是在可选上使用map的好地方:

let currentValue = uvProduct.currentValue()?.value
let currentTextProvider = CLKSimpleTextProvider(text: currentValue.map(String.init) ?? "--")
如果可选map

nil将返回nil,否则它将运行提供的闭包。在这种情况下,String.init取一个Double并返回一个String nil-coalescing运算符 ??解开map(是String?)的结果,如果{{1},则将其替换为"--" }是currentValue