2016-12-30 8 views
2
として戻ってくる場合

をチェックするためにガードを作成しようと、私は(文字列は10進数に変換されます)入力番号にユーザーを許可しますが、彼らは$ AN可能性の機会がある入力フィールドを持っていますいいえ、その場合は、ガードを使用して、ユーザーに間違いを知らせるUIAlertをポップアップしたいと思います。私はスウィフト3でDecimalのisNaNのBOOLプロパティがあることを読んだが、私はそれをどのように使うべきか完全にはわからない。あなたは入力がNaN

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

でそれを確認する。しかしからDecimalを作成することに注意することができますので、これは、私が

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

答えて

3

isNanをしようとしていること( タイプおよびすべての浮動小数点)Decimalのブール型プロパティは何かということです変換が失敗した場合は というオプションの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 ... 
} 
関連する問題