2016-12-30 41 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 ... 
}