NSNumberFormatter は、ユーロ (およびおそらく他の) 通貨文字列を数値型に解析できないようです。誰かが私が間違っていることを証明できますか.
次を使用して、通貨文字列から数値を取得しようとしています:
NSNumberFormatter *currencyFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
NSNumber *currencyNumber = [currencyFormatter numberFromString:currencyString];
これは、英国および米国の通貨の金額で問題なく機能します。$ と £ および千単位の区切り記号も問題なく処理します。
ただし、ユーロ通貨の金額 (設定アプリで地域形式をフランスまたはドイツに設定) で使用すると、空の文字列が返されます。次の文字列はすべて失敗します。
12,34 €
12,34
12.345,67 €
12.345,67
これらの文字列は、対応するロケールを使用するときに NSNumberFormatter の stringFromNumber メソッドから得られるものと正確に一致することに注意してください。
設定アプリで Region Format を France に設定し、次のコードで currencyNumber を 12.34 に設定すると、 currencyString が '12,34 €' に設定されます。
NSNumberFormatter *currencyFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
NSString *currencyString = [currencyFormatter stringFromNumber:currencyNumber];
特にユーロでこの問題をハッキングするのは明らかにかなり簡単ですが、できるだけ多くの国でこのアプリを販売したいと考えており、同様の状況が他のロケールでも発生する可能性があると考えています.
誰か答えがありますか?
ティア、ダンカン