Cela n'a pas fonctionné pour moi. J'ai été en mesure d'ajouter un espace entre le symbole monétaire et le montant en faisant cela.
Swift 3,0
currencyFormatter.negativePrefix = "\(currencyFormatter.negativePrefix!) "
currencyFormatter.positivePrefix = "\(currencyFormatter.positivePrefix!) "
Code complet:
extension Int {
func amountStringInCurrency(currencyCode: String) -> (str: String, nr: Double) {
let currencyFormatter = NumberFormatter()
currencyFormatter.usesGroupingSeparator = true
currencyFormatter.numberStyle = NumberFormatter.Style.currency
currencyFormatter.currencyCode = currencyCode
currencyFormatter.negativePrefix = "\(currencyFormatter.negativePrefix!) "
currencyFormatter.positivePrefix = "\(currencyFormatter.positivePrefix!) "
let nrOfDigits = currencyFormatter.maximumFractionDigits
let number: Double = Double(self)/pow(10, Double(nrOfDigits))
return (currencyFormatter.string(from: NSNumber(value: number))!, number)
}
}
Cette extension est un Int qui exprime le montant MinorUnits. C'est à dire. USD est exprimé avec 2 chiffres, alors que le yen japonais est exprimé sans chiffres. Voilà donc ce que cette extension serait de retour:
let amountInMinorUnits: Int = 1234
amountInMinorUnits.amountStringInCurrency(currencyCode: "USD").str // $ 12.34
amountInMinorUnits.amountStringInCurrency(currencyCode: "JPY").str // JP¥ 1,234
Les mille et séparateur décimal sont déterminés par les paramètres régionaux utilisateurs.
Brillant. A travaillé un régal. Merci – Fittoburst
Il est important de noter que cela ne fonctionne que lorsque formatWidth est défini, selon la question. – philippe