Ошибка NSNumberFormatter из документации Apple «Руководство по форматированию данных» - PullRequest
3 голосов
/ 07 февраля 2011

Я следую « Руководству по форматированию данных » с сайта Apple Developer:

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[numberFormatter setFormat:@"0.00%;0.00%;-0.00%"];
NSNumber *four = [NSNumber numberWithFloat:4.0];
NSLog(@"%@", [numberFormatter stringFromNumber:four]);

Но выдает исключение:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSNumberFormatter setFormat:]: unrecognized selector sent to instance 0x59359b0'

Последний раз документ обновлялся в 2009 году, поэтому я бы не стал винить в этом. Мои вопросы: как вы справляетесь с этой ошибкой?

Отредактированный вопрос

Как вы определяете формат на NSNumber? Как вы анализируете строку в число, число в строку? Как вы указываете шаблоны, которые Apple указала нам в документе . Я говорю о программировании iPhone. Спасибо всем!

Отредактировано снова

Давайте обобщим мой вопрос: если вы посмотрите на шаблоны , скажем, у меня есть строка "1 234,57 €" (последняя в ссылке), и я хочу разобрать это строка в число, мне нужно указать формат как: "# ## 0,00 ¤", но теперь для приложений iPhone, как предложили два человека, нет setFormat: метод.

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[numberFormatter setFormat:@"# ##0.00 ¤"];
NSNumber *dollars = [numberFormatter numberFromString:@"1 234,57 €"];

Как вы справляетесь с этим?

Ответы [ 2 ]

3 голосов
/ 07 февраля 2011

Ссылка, которую вы просматриваете, предназначена для Mac, а не для iOS NSNumberFormatterReference

попробуйте это:

[numberFormatter setNumberStyle:NSNumberFormatterPercentStyle];
0 голосов
/ 07 февраля 2011

Не похоже, что есть метод setFormat: для класса NSNumberFormatter (даже если все закончено документация !)

Попробуйте вместо этого метод setPositiveFormat:


Хотя, глядя на ваш пример проблемы, это может быть лучше:

NSLog(@"%f", 4.0f);

или, если вы хотите сохранить его в строке:

NSString *myString = [NSString stringWithFormat:@"%f", 4.0f]; // You might need to retain this!

Ознакомьтесь с руководством по форматированию строки .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...