Я пытаюсь извлечь двойное значение из строк, таких как:
"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