2015-06-08 8 views
-1

У меня есть textField, который позволяет пользователю вводить деньги. Я не хочу поддерживать только знак доллара США. Я хочу, чтобы он поддерживал все валюты. Но проблема в том, что некоторые долларовые символы после денег (например, немецкий: 27.99 €).Формат валюты с textField

Значок денег должен появляться еще до того, как пользователь вводит сумму. С символом доллара США это легко, просто сделайте $ . Но с другими, например, €, я не вижу, как я могу это сделать.

Мой вопрос в том, как я могу отобразить символ денег, чтобы он соответствовал текущей валюте?

Кроме того, если пользователь изменяет валюту, сохраняются ли сэкономленные суммы денег автоматически или мне придется вручную их менять?

Update

Я попытался следующие:

NSNumberFormatter *currencyFormatter = [[[NSNumberFormatter alloc] init] autorelease]; 
[currencyFormatter setLocale:[NSLocale currentLocale]]; 
[currencyFormatter setMaximumFractionDigits:2]; 
[currencyFormatter setMinimumFractionDigits:2]; 
[currencyFormatter setAlwaysShowsDecimalSeparator:YES]; 
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle]; 

Как я могу сделать, что появляются в textField?

+1

показать, как вы храните значения и какой код вы уже пробовали (и что он делает не так) – Wain

+0

Я храню значения в SQLite только с номером, а не с денежным знаком. Я проверил пару подобных вопросов о stackoverflow, но я не думаю, что они затрагивали оба моих вопроса. – Eric

ответ

1

У Apple очень хорошая поддержка для локализации.

Вы хотите использовать комбинацию локалей и NSNumberFormatters. Если вы создаете номер форматировщик, настроить его на валюту и установить локаль в Германии он должен отображать значение валюты правильно (символ валюты в конце, запятую в качестве десятичного разделителя и т.д.)

Этот код:

NSNumberFormatter *currencyFormatter = [[NSNumberFormatter alloc] init]; 
NSLocale *theGermanLocale = [NSLocale localeWithLocaleIdentifier: @"de_DE"]; 
currencyFormatter.locale = theGermanLocale; 
currencyFormatter.numberStyle = NSNumberFormatterCurrencyStyle; 

double value = 12.34; 
NSString *germanCurrencyString = [currencyFormatter stringFromNumber: @(value)]; 
NSLog(@"%f in German currency is \"%@\"", value, germanCurrencyString) 

Дисплеи:

12,34 в немецкой валюте является "12,34 €"

Там нет необходимости устанавливать количество ди gits или требовать десятичный разделитель. Установка форматирования на NSNumberFormatterCurrencyStyle правильно настраивает все параметры в форматоре чисел для указанной локали. В этом весь смысл.

+0

Спасибо за ответ! Я обновил вопрос с помощью кода. Как я могу вставить это в текстовое поле? – Eric

+0

О, да ладно! Взгляните на документы для NSNumberFormatter. Есть ли метод, который принимает число в качестве ввода и возвращает строку в качестве вывода? –

+0

Подсказка: он раскрыт в разделе документов Xcode под названием «Преобразование между числами и строками», и в нем есть как «строка», так и «число». И чтобы установить строку в текстовое поле, вы установите ее свойство text. –

Смежные вопросы