Swift Scanner работает по-разному в Xcode и Playground - PullRequest
0 голосов
/ 05 июня 2019

Я пытаюсь извлечь двойное значение из строк, таких как:

"0.01 USD"

Проблема в том, что он работает неправильно, и я не могу найти пример для моего случая.

Мой код от Xcode:

private func extractDoubleFromTextField(textField: UITextField) -> Double {
    var result : Double = 0.0

    let currentText = textField.text

    print("extracted text: \(currentText!)")

    if (currentText != nil) {
        let scanner = Scanner.localizedScanner(with: currentText!)
        (scanner as AnyObject).scanDouble(&result)
    }

    print("result before return: \(String(format:"%.2f", result))")

    return result
}

Выход:

extracted text: 0.01
result before return: 0.00

Выполнение того же кода в Playground дает мне правильные значения:

var result : Double = 0.0
let currentText = "0.01"

if (currentText != nil) {
let scanner = Scanner.localizedScanner(with: currentText)
    (scanner as AnyObject).scanDouble(&result)
}

print(result)

Выход:

0.01

Обновление

Функция scanDouble возвращает true (успех) даже для случая "0.01" -> 0.00

И тестирование на виртуальном устройстве дает мне правильные результаты: «0,01» -> 0,01

...