swift十进制格式到双格式问题

swift十进制格式到双格式问题,swift,Swift,我有一个文本字段,我可以在其中写入一个十进制键盘值,如25.00 我将该值保存到CoreData(双精度格式)=>double(txtField.text!) 它起作用了 在设置为“德国”的设备上,值将为25,00 但在这里我会得到这个错误: Fatal error: Unexpectedly found nil while unwrapping an Optional value (swift 5) 我的错在哪里? 谢谢 您需要使用NumberFormatter来解析文本字段中的输入Numb

我有一个文本字段,我可以在其中写入一个十进制键盘值,如
25.00
我将该值保存到CoreData(双精度格式)=>
double(txtField.text!)
它起作用了

在设置为“德国”的设备上,值将为
25,00
但在这里我会得到这个错误:

Fatal error: Unexpectedly found nil while unwrapping an Optional value
(swift 5)

我的错在哪里?
谢谢

您需要使用
NumberFormatter
来解析文本字段中的输入
NumberFormatter
正确处理不同地区使用的不同十进制分隔符。另一方面,
Double
初始化接受
字符串
,不处理小数点以外的小数分隔符

NumberFormatter
也默认为用户的
Locale
,因此在解析用户输入时不需要设置其
Locale
属性

let numberFormatter = NumberFormatter()
if let numericInput = numberFormatter.number(from: txtField.text!)?.doubleValue {
    // handle the `Double` value here
}

谢谢double是核心数据的正确格式,还是应该使用decimal?@Ghost108,这取决于您试图表示的值的类型。如果您试图表示十进制数(如价格),请使用
decimal
。如果要表示非十进制浮点值,请使用
Double