Xcode 8.0 (8A218a) GM
Target: iOS 10 (Swift 3)
Considérons le code suivant:
let number = NSDecimalNumber(decimal: 22.4)
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .currency
numberFormatter.locale = Locale.current
let result = numberFormatter.string(from: number)
print(result!)
Le résultat est:
¤22.40
(Je ne sais pas ce que signifie ¤
.)
Mais si j'initialise les paramètres régionaux tels que:
numberFormatter.locale = Locale(identifier: "en_US")
Le résultat sera:
$22.40
... ce à quoi je m'attendais en premier lieu.
Notez que cela fonctionne dans un terrain de jeu où:
Le problème semble se produire uniquement sur les appareils/simulateurs via le lancement de Xcode.
(J'ai testé sur deux macOS différents - sur mon lieu de travail et à la maison.)
Des idées sur ce qui se passe?
Répondant à ma propre question: recréer le projet. : \
Le projet a été démarré sous Xcode 7 + Swift 2, puis "migré" vers Xcode 8 + Swift 3 (manuellement). Quelque chose a mal tourné. Je ne sais pas quoi (et je ne veux pas savoir).
Ce n'était pas un projet énorme, alors j'ai passé environ 40 minutes à déplacer des fichiers. Si c'était un gros projet, je serais f .... d maintenant.
Xcode pls.
J'ai les mêmes problèmes et je le résous par le code ci-dessous. J'espère que c'est utile
func formatCurrency(value: Double) -> String {
let formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.maximumFractionDigits = 2
formatter.locale = Locale(identifier: Locale.current.identifier)
let result = formatter.string(from: value as NSNumber)
return result!
}
Cela m’arrivait dans le simulateur, s’avère que c’est une erreur dans la configuration de mon schéma. Commander les étapes suivantes:
Je pense que la langue de votre appareil est le chinois C’est pourquoi le symbole ¤ est représenté par le symbole monétaire.