Как можно безопасно развернуть опциональное значение по умолчанию, используя `coalescing unwrapping` - Not workig - Swift - PullRequest
0 голосов
/ 25 октября 2019

Как можно безопасно развернуть первый необязательный элемент из 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 to "lb. 8oz."

Неустранимая ошибка: неожиданно обнаружен ноль при развертывании необязательного значения

К вашему сведению - я ищу однострочное решение, я знаю, каксделать это, используя if let или guard.

Ответы [ 2 ]

1 голос
/ 25 октября 2019
let pounds = Double(arrayOfStrings[0]) ?? 0.0
print("Pounds \(pounds)")

У меня работает.

1 голос
/ 25 октября 2019

Можно развернуть доступ к массиву и , преобразование в Double

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