2016-12-30 15 views
2

我有一个输入字段,允许用户输入数字(字符串被转换为十进制),但有一个场合,他们可能是$ an没有号码,在这种情况下,我想使用警卫并弹出UIAlert,让用户知道这个错误。我读过在Swift 3中有一个用于Decimal的isNaN BOOL属性,但我不完全确定如何使用它。这就是我想要试图创建一个警卫来检查输入是否返回为NaN

guard myDecimalNumber != isNaN else { 
     print("this is not a number show alert") 
    } 

回答

3

isNanDecimal布尔属性(和所有浮点 类型),这样你就可以

guard !myDecimalNumber.isNaN else { 
    // ... `myDecimalNumber` is NaN ... 
} 

检查,但请注意,创建从Decimal如果转换失败,字符串会返回一个 可选,即nil,因此您可能需要的是可选绑定:

guard let myDecimalNumber = Decimal(string: textField.text) else { 
    // ... `textField.text` does not represent a number ... 
} 

(和相同的方法也适用于其他类型的数字像 DoubleInt,...)

对于本地化的小数点分隔符的妥善处理,使用 号格式:

guard let myDecimalNumber = formatter.number(from: textField.text)?.decimalValue else { 
    // ... `textField.text` does not represent a number ... 
}