试图创建一个守卫来检查输入是否作为 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")
   }

isNanDecimal 的布尔值 属性(以及所有浮点数 类型),因此您可以使用

进行检查
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 ...
}