【问题标题】:String to Double conversion nil in different region Swift不同区域Swift中的String到Double转换nil
【发布时间】:2022-01-19 02:00:40
【问题描述】:

有一个文本字段

@IBOutlet weak var txt: UITextField!

当我尝试将 txt 的值转换为 Double 时,它​​在美国地区运行良好。

例如

let magicNumber = Double(txt.text ?? "0.0")

如果我输入 12 UITextField 然后 12 分配给 magicNumber

然后我将地区更改为德国。

let magicNumber = Double(txt.text ?? "0.0")

如果我输入 12,8 UITextField 则 magicNumber 为 nil。

我需要一个正确的双精度值,例如:12.8

我怎样才能做到这一点?请给我建议正确的方法。

【问题讨论】:

  • 使用NumberFormatter 将数字与用户输入进行转换,而不是Double(string)

标签: ios swift objective-c uikit


【解决方案1】:

小心处理本地化的数字字符串

let inputString = "12,8" 
let formatter = NumberFormatter()
formatter.locale = Locale.current // Locale(identifier: "de")
let number = formatter.number(from: inputString) 
print(number) // 12.8

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多