2017-11-29 30 views
0

テキストフィールドのテキストを変換しようとしていますが、これは10進数のパッドキーボードのために数字のみにすることができます。Swiftでクラッシュする文字列からダブルに変換

私が働いている変数:

screenshot

このエラーは、私は「場合にのみ発生します。私は取得しています

static var selectedMoneyMissing: Double = 30.0 

let formatter = NumberFormatter() 
formatter.numberStyle = .decimal 
formatter.maximumFractionDigits = 2 
formatter.roundingMode = .down 

let roundedReplacing = formatter.string(from: NSNumber(value: Double(textField.text!.replacingOccurrences(of: ",", with: "."))!)) 

let roundedReplacingSecond = roundedReplacing.replacingOccurrences(of: " ", with: "") 
print(roundedReplacing) 
print(roundedReplacingSecond) 

FiltersViewController.selectedMoneyMissing = Double(roundedReplacingSecond)! 

はエラーが "予期せず.... nilを見つけ"私はそれがroundedReplacingSecond変数が存在する理由である空白のためかもしれないと思った。しかし、それはまだ動作しません(実際には、私はコンソールが "roundedReplacingSecond"変数を空白で印刷しているのか分かりません)。

+1

また、テキストフィールドにはキーボードタイプのために数字だけが含まれているという誤った仮定です。ユーザーは何かを貼り付けることができます。 – Paulw11

+0

このペーストの問題を指摘してくれてありがとう@ Paulw11、私はそれを修正しました。 – RadoJakubes

答えて

1

あなたは特にグループ化と桁区切りの使用を禁止することで、あなたのNumberFormatterより制限を設定する必要があります。

formatter.groupingSeparator = false 
formatter.hasThousandSeparator = false 

はさらに性質のドキュメントを参照してください。次に、テキストの置換をまったく行う必要はありません。これはユーザーのロケールによっては変わる可能性があります。

+0

この回答をいただきありがとうございます。この問題を解決するには、formatter.groupingSeparator = "" – RadoJakubes

関連する問題