2016-05-10 17 views
0

2つのUITextFieldから入力を受け取り、それらを乗算して3番目のUITextFieldに戻すアプリケーションを作成しようとしています。iOSとSwiftのNSNumberFormatterでロケールを取得する

import UIKit 

class ParallelogramSurfaceArea: UIViewController { 

    @IBOutlet weak var sideA: UITextField! 
    @IBOutlet weak var height: UITextField! 
    @IBOutlet weak var surfaceArea: UITextField! 

    @IBAction func calculate(sender: AnyObject) { 

      let aText = (sideA.text! as NSString).doubleValue 
      let hText = (height.text! as NSString).doubleValue 

      let a = round(10000 * aText)/10000 
      let h = round(10000 * hText)/10000 
      let sa = round(10000*(a * h))/10000 

      sideA.text = "Side A = \(a) m" 
      height.text = "Height = \(h) m" 
      surfaceArea.text = "Surface Area = \(sa) m²" 
    } 

問題は、小数点のパッドでは '、'が '。'の代わりに表示されることです。ロケール設定のために計算にエラーが発生します。これをNSNumberFormatterでどのように修正できますか? class ParallelogramSurfaceAreaを改善するためのアドバイスはありますか?あなたが倍増し、現在のローカル考慮して取るために、文字列から変換したい場合は

+2

アップデート 'NSNumberFormatter'を使用するようにしようと、あなたの質問により、現在のロケールにlocal値を設定します。 – rmaddy

答えて

2

は、NSNumberFormatterはデフォルト

let numberFormatter = NSNumberFormatter() 
numberFormatter.locale = NSLocale.currentLocale() // default value 
// or custom local 
numberFormatter.locale = NSLocale(localeIdentifier: "fr_FR") 

let stringValue = sideA.text as? String ?? "" 
let doubleValue = numberFormatter.numberFromString(stringValue)?.doubleValue ?? 0.0 
+2

フォーマッタのロケールはデフォルトで現在のロケールに設定されているため、設定する必要はありません。 – rmaddy

+2

私の答えは 'NSLocale.currentLocale()'がデフォルト値であることを更新しました – Aladin

関連する問題