#iphone #ios #xcode #ipad #ios4
#iPhone #iOS #xcode #iPad #ios4
Вопрос:
Я использовал приведенный ниже код для форматирования введенных символов в десятичном стиле, я использую приведенный ниже код в TextFields, который нужно отредактировать:
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
long long num = [[formatter numberFromString:textField.text] longLongValue];
NSString *formattedOutput = [formatter stringFromNumber:[NSNumber numberWithLongLong:num ]];
textField.text = formattedOutput;
[formatter release];
У меня проблема в приведенном выше коде в том, что в первый раз он работает нормально, но когда мы возвращаемся к текстовому полю и редактируем, и выходим из него, значение меняется на 0,
Например, я ввел начальное значение 123456789 и правильно получил результат 123 456 789. Если я затем повторно введу и отредактирую текстовое поле на 123 456,78, поле будет заполнено 0, тогда как оно должно было быть 12 345 678.
Комментарии:
1. 123,456,78 является некорректной записью. Вы имеете в виду 123 456 789?
2. я не ввожу новое значение, просто редактирую форматированное число, т. Е. удаляю последнюю цифру, тогда значение заполняется до 0 вместо 12 345 678
Ответ №1:
NSNumberFormatter зависит от того, правильно ли отформатирован вводимый в него текст.
Поэтому, когда вы удаляете последнюю цифру из своего номера… то есть там, где число теперь выглядит как:
123,456,78
Теперь число отформатировано неправильно, и NSNumberFormatter предполагает, что это недопустимое число, и возвращает ноль.
Если вы хотите получить надежные значения long long из вашего текстового поля, удалите запятые перед преобразованием (при проверке текстового поля, чтобы убедиться, что там всего 0-9
цифры), и все должно быть готово.