Преобразование строки NSString в конкретный языковой стандарт NSNumber - PullRequest
4 голосов
/ 05 января 2011

Я использую KeyboardType = UIKeyboardTypeDecimalPad, и на некоторых телефонах вы видите «,» в левом нижнем углу вместо «.». Это зависит от языковых настроек телефона! С "." версия все работает нормально, когда я использую [NSNumber numberWithFloat: [textField.text floatValue]], но с версией "," он говорит, что 2.0 для 2,5 Кто-нибудь знает обходной путь?

Ответы [ 2 ]

6 голосов
/ 05 января 2011

Вам необходимо выполнить преобразование строк с учетом локальных особенностей, которое правильно обрабатывает «2,5» и «2,5» в соответствии с локалью по умолчанию. Попробуйте:

NSNumber *num=[NSDecimalNumber decimalNumberWithString:textField.text];

С NSDecimalNumber Ссылка на класс :

Является ли NSDecimalSeparator период (как используется, например, в США) или запятая (как есть используется, например, во Франции) зависит в локали по умолчанию.

0 голосов
/ 11 декабря 2018
NSNumberFormatter *numberFormatter = [NSNumberFormatter new];
NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[numberFormatter setLocale:usLocale];
NSNumber *num = [numberFormatter numberFromString:textField.text];

Вы можете указать нам локаль и всегда использовать номер аннотации.

...