À l'aide de NSNumberFormatter pour obtenir une valeur décimale à partir d'une monnaie internationale de la chaîne

Il semble que la NSNumberFormatter peut pas analyser Euro (et probablement d'autres) des chaînes de devise dans un type numérique. Quelqu'un peut-il svp me prouver le contraire.

Je suis d'essayer d'utiliser les éléments suivants pour obtenir un chiffre montant à partir d'une chaîne de devise:

NSNumberFormatter *currencyFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
NSNumber *currencyNumber = [currencyFormatter numberFromString:currencyString];

Cela fonctionne bien pour le royaume-UNI et NOUS les montants en devise. Il en vient même à des $ et £ et les séparateurs de milliers, sans aucun problème.

Cependant, lorsque je l'utilise avec l'euro, les montants en devise (avec la Région, le formatage de la France ou de l'Allemagne dans l'application des paramètres), il retourne une chaîne vide. Toutes les chaînes de caractères suivantes échouent:

12,34 
12,34
12.345,67 
12.345,67

Il est intéressant de noter que ces chaînes qui correspondent exactement à ce qui vient de la NSNumberFormatter de stringFromNumber méthode lors de l'utilisation de la correspondante locale.

Réglage de la Région de Format pour la France dans l'application réglages, puis en définissant currencyNumber à 12.34 dans le code suivant, les résultats de currencyString être réglé à " 12,34 €' :

NSNumberFormatter *currencyFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
NSString *currencyString = [currencyFormatter stringFromNumber:currencyNumber];

Il serait évidemment assez facile de pirater autour de ce problème spécifiquement pour l'Euro, mais je suis l'espoir de vendre cette application dans autant de pays que possible, et je suis en train de penser qu'une situation similaire s'est lié à se produire avec d'autres localités.

Quelqu'un aurait-il une réponse?

TIA, Duncan

  • Je n'ai pas trouvé une solution à ce pourtant si aucune entrée ne sera plus qu'appréciée. Merci, Duncan
  • Je vous suggère de déposer un rapport de bogue.
InformationsquelleAutor pieSquared | 2010-08-24