Сохранение формата валюты в какао на устройстве, которое так легко может изменить формат региона - PullRequest
2 голосов
/ 30 июня 2009

Я храню значения моей валюты в NSDecimalNumbers (как рекомендуется во многих других темах на этом форуме) и использую NSNumberFormatter для их правильного отображения и обработки ввода текста. Все хорошо! Тем не менее, когда я изменяю формат региона в разделе настроек iPhone «Общие настройки» где-то за пределами США, скажем, в Германии, а затем смотрю на мое приложение, ВСЕ мои цифры изменились с $ на €. Таким образом, сумма, которая была первоначально введена как «100,00 $», теперь отображается как «100,00 €».

Это плохо. Потому что, к сожалению, доллар больше не оценивается так же, как евро - даже не близко :-( Но я отвлекся ... В конечном счете, я не ищу конверсии. Я просто хотел бы отобразить сумму в валюта, с которой он был изначально создан.

Как Какао может обеспечить правильное форматирование этих чисел, когда пользователи путешествуют по миру? Я не хотел бы ограничивать полезность моего приложения одной валютой ...

1 Ответ

3 голосов
/ 30 июня 2009

При вводе значений вы можете получить текущий системный код валюты ISO 4217 и сохранить его с номером (это просто строка):

NSString* currencyCode = [[[[NSNumberFormatter alloc] init] autorelease] currencyCode];

При отображении данных установите этот код валюты в NSNumberFormatter:

// NSNumberFormatter* formatter = [[[[NSNumberFormatter alloc] init] autorelease] setCurrencyCode:currencyCode];

Изменить опечатку в коде:

NSNumberFormatter* formatter = [[[NSNumberFormatter alloc] init] autorelease];
[formatter setCurrencyCode:currencyCode];
...