Die Klasse NSNumberFormatter
Die Ausgabe der Rechenergebnisse sollte ebenfalls formatiert geschehen, da sie viele Nachkommastellen aufweisen kann. Es gibt verschiedene Möglichkeiten, dies umzusetzen. Am einfachsten ist, die Zahlen so zu formatieren, dass weniger Kommastellen angezeigt werden. Änderen Sie die zwei Anweisungen in der calculateButtonClicked-Methode von
Die Ausgabe der Rechenergebnisse sollte ebenfalls formatiert geschehen, da sie viele Nachkommastellen aufweisen kann. Es gibt verschiedene Möglichkeiten, dies umzusetzen. Am einfachsten ist, die Zahlen so zu formatieren, dass weniger Kommastellen angezeigt werden. Änderen Sie die zwei Anweisungen in der calculateButtonClicked-Methode von
self.outputDegree.doubleValue = resultDegrees self.outputRadiants.doubleValue = resultRadiants |
zu
self.outputDegree.stringValue = String(format: "%.3f", resultDegrees) self.outputRadiants.stringValue = String(format: "%.3f", resultRadiants) |

Das funktioniert schon gut, doch leider werden bei den Zahlen Punkte und keine Komata als Dezimaltrennzeichen verwendet. Zwar wäre es jetzt ein Leichtes, vor der Ausgabe sämtlich Punkte zu ersetzten, doch eine akzeptable Lösung ist das nicht. Mit solch einer Anpassung hätten wir mit unserem Programm ein ganz ähnliches Problem in englischsprachigen Ländern, wo ein Punkt als Trennzeichen verwendet wird. Die beste Lösung ist es deshalb, den Wert entsprechend den aktuellen Betriebssystemeinstellungen für Sprache und Region zu formatieren. Das ist eine Aufgabe für die Klasse NSNumberFormatter.
NSNumberFormatter ist eine von NSFormatter abgeleitete Klasse und spezialisiert darin, Zahlen zu formatieren. Zwar finden wir NSNumberFormatter auch als Element in der Object Library, von wo aus es direkt auf ein Eingabefeld gezogen werden kann, doch dieses Objekt ist umständlich zu konfigurieren und zudem nicht fehlerfrei. Besser ist es, die NSNumberFormatter-Instanz im Programmcode zu erzeugen und dort zu konfigurieren. Der geeignete Ort, das zu tun, ist die applicationDidFinishLaunching-Methode in der Klasse AppDelegate. Die aktuellen Region-Einstellung können wird über NSLocale.currentLocale() ermitteln.
NSNumberFormatter ist eine von NSFormatter abgeleitete Klasse und spezialisiert darin, Zahlen zu formatieren. Zwar finden wir NSNumberFormatter auch als Element in der Object Library, von wo aus es direkt auf ein Eingabefeld gezogen werden kann, doch dieses Objekt ist umständlich zu konfigurieren und zudem nicht fehlerfrei. Besser ist es, die NSNumberFormatter-Instanz im Programmcode zu erzeugen und dort zu konfigurieren. Der geeignete Ort, das zu tun, ist die applicationDidFinishLaunching-Methode in der Klasse AppDelegate. Die aktuellen Region-Einstellung können wird über NSLocale.currentLocale() ermitteln.
func
applicationDidFinishLaunching(aNotification: NSNotification) { var formatter = InputFormatter() self.inputDegree.formatter = formatter self.inputMinutes.formatter = formatter self.inputSeconds.formatter = formatter var numberFormatter = NSNumberFormatter() numberFormatter.formatterBehavior = NSNumberFormatterBehavior.Behavior10_4 numberFormatter.numberStyle = NSNumberFormatterStyle.DecimalStyle numberFormatter.maximumFractionDigits = 3 numberFormatter.minimumFractionDigits = 3 numberFormatter.locale = NSLocale.currentLocale() self.outputDegree.formatter = numberFormatter self.outputRadiants.formatter = numberFormatter } |
