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