2016-05-10 9 views
0

Ich versuche, eine Anwendung, die die Eingabe von zwei UITextFields erhalten, multipliziert sie und gibt das Produkt in einem dritten UITextField zurück.Locale mit NSNumberFormatter in iOS und Swift erhalten

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²" 
    } 

Das Problem ist, dass auf dem Dezimaltrennzeichen das ',' anstelle des '.' aufgrund der Gebietsschemaeinstellungen, die zu einem Fehler in der Berechnung führen. Wie kann ich das mit NSNumberFormatter beheben? Irgendwelche Vorschläge zur Verbesserung der class ParallelogramSurfaceArea?

+2

Aktualisieren Sie Ihre Frage mit Ihrem Versuch 'NSNumberFormatter' zu verwenden. – rmaddy

Antwort

2

Wenn Sie von Zeichenfolge konvertieren möchten die aktuelle lokale in Betracht zu verdoppeln und nehmen, setzen NSNumberFormatter den local Wert auf die aktuelle locale standardmäßig

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

Das Gebietsschema des Formatierers muss nicht festgelegt werden, da es standardmäßig dem aktuellen Gebietsschema entspricht. – rmaddy

+2

Ich habe meine Antwort aktualisiert, um zu erwähnen, dass 'NSLocale.currentLocale()' der Standardwert ist – Aladin

Verwandte Themen