Кажется, что 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
Стоит отметить, что эти строки точно соответствуют тому, что получается из метода stringFromNumber NSNumberFormatter при использовании соответствующей локали.
Установка формата региона на Франция в приложении настроек, а затем установка currencyNumber на 12,34 в следующем коде приводит к тому, что для currencyString устанавливается значение '12, 34 € ':
NSNumberFormatter *currencyFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
NSString *currencyString = [currencyFormatter stringFromNumber:currencyNumber];
Очевидно, было бы довольно легко обойти эту проблему специально для евро, но я надеюсь продавать это приложение в как можно большем количестве стран, и я думаю, что аналогичная ситуация неизбежно произойдет с другими регионами.
Есть ли у кого-нибудь ответ?
ТИА, Дункан