Я использую следующий NSNumberFormatter для добавления запятых и символа в значение валюты.iOS: NSNumberFormatter не преобразовывает строку обратно в NSNumber
self.currencyFormatter = [NSNumberFormatter new];
self.currencyFormatter.numberStyle = NSNumberFormatterCurrencyStyle;
self.currencyFormatter.currencySymbol = @"£";
self.currencyFormatter.currencyCode = @"GBP";
self.currencyFormatter.roundingMode = NSNumberFormatterRoundHalfUp;
self.currencyFormatter.maximumFractionDigits = 0;
Использование:
self.principleAmountTextField.text = [self.currencyFormatter stringFromNumber:[NSNumber numberWithInteger:100000]];
Это отображает 100 000 £, как и ожидалось. Теперь, если я вставляю еще две цифры (текст становится £ 100 00096) в текстовом поле и пытаюсь преобразовать строку в Integer, я получаю 0! В основном следующая строка возвращает 0. Я понятия не имею, как справиться с этой проблемой.
NSLog(@"%d", [[self.currencyFormatter numberFromString:@"£100,00096"] integerValue]);
FYI У меня есть пользовательское inputview для текстового поля, которое просто позволяет номерам вводить текстовое поле. В Did Edit End даже я отформатирую номер и покажу с запятой.
'£ 100,00096' - недействительный номер. '£ 10,000,096' было бы так же, как' 10000096'. – rmaddy
.... но я не могу поместить запятые, когда пользователь вводит номер! Есть ли в любом случае номера, которые автоматически преобразуются в требуемый формат, как введенные? – applefreak
Если пользователь может ввести недопустимое значение, вам нужно будет удалить любые символы группировки из строки, прежде чем пытаться ее преобразовать. – rmaddy