Es scheint, dass NSNumberFormatter Euro (und wahrscheinlich andere) Währungszeichenfolgen in einem numerischen Typ nicht analysieren kann. Kann mir bitte jemand falsch beweisen?Verwenden von NSNumberFormatter, um einen Dezimalwert aus einer internationalen Währungszeichenfolge zu erhalten
Ich versuche, das folgende erhalten eine numerische Menge von einer Währung Zeichenfolge zu verwenden:
NSNumberFormatter *currencyFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
NSNumber *currencyNumber = [currencyFormatter numberFromString:currencyString];
Dies funktioniert gut für die britischen und US-Währung beträgt. Es beschäftigt sich sogar mit $ und £ und Tausender Trennzeichen ohne Probleme.
Wenn ich es jedoch mit Euro-Währungsbeträgen verwende (mit dem Region-Format in der Einstellungen-App auf Frankreich oder Deutschland eingestellt), wird eine leere Zeichenfolge zurückgegeben. Alle folgenden Zeichenfolgen fehlschlagen:
12,34 €
12,34
12.345,67 €
12.345,67
Es ist erwähnenswert, dass diese Strings genau dem entsprechen, was aus der stringFromNumber Methode des NSNumberFormatter kommt, wenn das entsprechende Gebietsschema verwendet wird.
die Region Format nach Frankreich in den Einstellungen App einstellen, dann currencyNumber bis 12.34 im folgenden Code, ergibt currencyString Einstellung ‚34 € bis '12 gesetzt wird:
NSNumberFormatter *currencyFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
NSString *currencyString = [currencyFormatter stringFromNumber:currencyNumber];
Es wäre offensichtlich recht sein Es ist einfach, dieses Problem speziell für den Euro zu hacken, aber ich hoffe, diese App in so vielen Ländern wie möglich zu verkaufen, und ich denke, dass eine ähnliche Situation bei anderen Ländern auftreten wird.
Hat jemand eine Antwort?
TIA, Duncan
Ich habe noch keine Lösung gefunden, also würde jede Eingabe sehr geschätzt werden. Danke, Duncan – pieSquared
Ich würde vorschlagen, einen Fehlerbericht einzureichen. –