0

Ich verwende Währungsformatierung, um Währungssymbole/-stile für die lokalen Einstellungen des Benutzers festzulegen. Hier ist mein Code. Ich denke, es funktioniert gut. Es befindet sich in meiner ViewDidLoad.Verwenden derselben Währungsformatierung in mehreren Methoden

let currencyFormat = NumberFormatter()  
currencyFormat.locale = NSLocale.current 
currencyFormat.usesGroupingSeparator = true 
currencyFormat.numberStyle = NumberFormatter.Style.currency 
... 
labelTotalAmount.text = currencyFormat.string(for: totalAmount) 

Das Problem ist, ich möchte die gleiche Formatierung in zwei anderen Methoden verwenden. Es scheint eine Verschwendung zu sein, die Formatierung für jede Methode zu wiederholen, wann immer ich formatieren möchte.

Gibt es eine Möglichkeit, die Formatierung einmal festzulegen und die Einstellungen in jeder Methode der Klasse zu speichern?

Ich benutze Swift 3. Ich schätze jede Hilfe, die Sie geben können !!

+0

Verwenden Sie einen Klassen- oder globalen Wert oder einen Singleton. – JAL

+0

http://stackoverflow.com/questions/24960621/struggling-with-nsnumberformatter-in-swift-for-currency/42957137#42957137 –

+0

FYI - keine Notwendigkeit, das Gebietsschema auf das aktuelle Gebietsschema einzustellen, da dies der Standardwert ist. – rmaddy

Antwort

1

Machen Sie es sich eine berechnete Eigenschaft der Klasse:

class Whatever { 
    let currencyFormat: NumberFormatter = { 
     let res = NumberFormatter() 
     res.numberStyle = .currency 
     res.usesGroupingSeparator = true 
     return res 
    }() 
} 

Jetzt können Sie diese Eigenschaft in jeder Methode verwenden.

func someMethod() { 
    let str = currencyFormat.string(for: 5.99) 
} 
+0

Ich bin nicht sicher, warum das für mich nicht funktioniert. Vielleicht stelle ich die Klasse "Whatever" an die falsche Stelle? Ich habe es sowohl außerhalb meiner Klasse Viewcontroller: UIViewController und innerhalb gefunden. – Jupiter869

+0

Das soll sein, was auch immer deine Klasse ist. Erstellen Sie keine neue Klasse. Machen Sie 'currencyFormat' einfach zu einer Eigenschaft Ihrer View-Controller-Klasse (oder einer anderen Klasse, die diese Eigenschaft benötigt). – rmaddy

+0

Danke für die Korrektur meines dummen Fehlers! Jetzt funktioniert es wunderbar! Vielen Dank!!! – Jupiter869

Verwandte Themen