Swift необязательно и значение по умолчанию для двойного - PullRequest
0 голосов
/ 21 декабря 2018

Я пытаюсь установить значение поставщика текста на основе двойного числа из необязательного ответа.Я чувствую, что должен быть более короткий способ сделать это, но когда я пытаюсь использовать значение по умолчанию, он настаивает на том, что значение по умолчанию должно быть двойным, и я хочу заменить его строкой.

Псевдокод:

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 голосов
/ 21 декабря 2018

Это хорошее место для использования 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?) или заменяет его на "--", если currentValue равно nil.

...