Swift 试图创建一个保护来检查输入是否返回为NaN
我有一个允许用户输入数字的输入字段(字符串被转换为十进制),但有时它们可能是$an no数字,在这种情况下,我希望使用一个保护并弹出一个UIAlert,让用户知道错误。我读到Swift 3中有一个十进制的isNaN布尔属性,但我不完全确定如何使用它。这就是我正在尝试的Swift 试图创建一个保护来检查输入是否返回为NaN,swift,swift3,decimal,nan,Swift,Swift3,Decimal,Nan,我有一个允许用户输入数字的输入字段(字符串被转换为十进制),但有时它们可能是$an no数字,在这种情况下,我希望使用一个保护并弹出一个UIAlert,让用户知道错误。我读到Swift 3中有一个十进制的isNaN布尔属性,但我不完全确定如何使用它。这就是我正在尝试的 guard myDecimalNumber != isNaN else { print("this is not a number show alert") } isNan是Decimal(和所有浮点)的布
guard myDecimalNumber != isNaN else {
print("this is not a number show alert")
}
isNan
是Decimal
(和所有浮点)的布尔属性
类型),因此您可以使用
guard !myDecimalNumber.isNaN else {
// ... `myDecimalNumber` is NaN ...
}
但请注意,从字符串创建十进制
,将返回
可选,如果转换失败,则为nil
,那又怎样
您可能需要的是可选绑定:
guard let myDecimalNumber = Decimal(string: textField.text) else {
// ... `textField.text` does not represent a number ...
}
(同样的方法也适用于其他数字类型,如
Double
,Int
,…)
要正确处理本地化的十进制分隔符,请使用
数字格式化程序:
guard let myDecimalNumber = formatter.number(from: textField.text)?.decimalValue else {
// ... `textField.text` does not represent a number ...
}