试图创建一个守卫来检查输入是否作为 NaN 返回
trying to create a guard to check if an input comes back as NaN
我有一个允许用户输入数字的输入字段(字符串被转换为十进制),但有时它们可能是 $ 和无数字,在这种情况下我想使用守卫并弹出一个 UIAlert 让用户知道错误。我读到在 Swift 3 中有一个 BOOL 属性 of isNaN for Decimal,但我不完全确定如何使用它。这就是我正在尝试的
guard myDecimalNumber != isNaN else {
print("this is not a number show alert")
}
isNan
是 Decimal
的布尔值 属性(以及所有浮点数
类型),因此您可以使用
进行检查
guard !myDecimalNumber.isNaN else {
// ... `myDecimalNumber` is NaN ...
}
但请注意,从字符串 returns 创建 Decimal
optional 如果转换失败则为 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 ...
}
我有一个允许用户输入数字的输入字段(字符串被转换为十进制),但有时它们可能是 $ 和无数字,在这种情况下我想使用守卫并弹出一个 UIAlert 让用户知道错误。我读到在 Swift 3 中有一个 BOOL 属性 of isNaN for Decimal,但我不完全确定如何使用它。这就是我正在尝试的
guard myDecimalNumber != isNaN else {
print("this is not a number show alert")
}
isNan
是 Decimal
的布尔值 属性(以及所有浮点数
类型),因此您可以使用
guard !myDecimalNumber.isNaN else {
// ... `myDecimalNumber` is NaN ...
}
但请注意,从字符串 returns 创建 Decimal
optional 如果转换失败则为 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 ...
}