ios String到Double的转换nil在不同地区Swift

92dk7w1h  于 2023-08-08  发布在  iOS
关注(0)|答案(2)|浏览(138)

有一个文本字段

@IBOutlet weak var txt: UITextField!

字符串
当我试图将txt的值转换为Double时,它在美国地区工作正常。
比如说

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


如果我键入12 UITextField,则magicNumber上分配12
然后我把地区改为德国。


的数据

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


如果我键入12,8 UITextField,则magicNumber为nil。
我需要一个正确的double值,如:12.8
我怎么能做到这一点?请告诉我正确的方法。

gtlvzcf8

gtlvzcf81#

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

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

字符串

smdnsysy

smdnsysy2#

您正在处理的问题与默认的.当前区域设置和应用程序的本地化有关。.decimalPad首先查看应用程序本地化,如果它没有以.current region语言进行本地化,则默认为en_YourLanguage格式。因此,您的.current格式的数字可能有“.”分隔符,但您会在. decimalPad上看到“,”。
范例:

  • 我的地区:* 乌克兰 *
  • 我的应用已本地化:* 假 *
  • .numberPad上的区域设置:* en_UA *
  • .current区域设置(如果格式化):* uk_UA *

相关问题