iPhone NSNumberFormatter setFormat: - PullRequest
       6

iPhone NSNumberFormatter setFormat:

11 голосов
/ 06 января 2009

Похоже, что NSNumberFormatter's метод для настройки пользовательских formatters. setFormat: недоступно на iPhone ...

ТАК это ... вылетает мое приложение:

NSNumberFormatter *lengthFormatter = [[NSNumberFormatter alloc] init];
[lengthFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[lengthFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[lengthFormatter setFormat:@"#,##0.0M"];

Это случилось с кем-то еще?

Спасибо

Dan ** ответил ниже. NSNumberFormatter также имеет методы, называемые setPositiveFormat: setNegativeFormat:, которые заменяют обесцененный setFormat: **

1 Ответ

9 голосов
/ 06 января 2009

Да, это задокументировано как примечание в NSNumberFormatter Reference Reference (требуется вход в систему). В записке написано:

iPhone OS Примечание: iPhone OS поддерживает только современное 10.4+ поведение. Методы в стиле 10.0 и строки форматирования недоступны в iPhone OS.

РЕДАКТИРОВАТЬ: Добавлено больше текста для поддержки последующих вопросов.

Вы могли бы переписать свое на что-то подобное:

NSNumberFormatter *lengthFormatter = [[NSNumberFormatter alloc] init];
[lengthFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[lengthFormatter setPositiveSuffix:@"M"];
[lengthFormatter setNegativeSuffix:@"M"]; // assuming it can go negative

Предлагаю взглянуть на документ, на который я ссылался выше. Это специально для iPhone версии NSNumberFormatter, так что ни один из методов, которые вызовут сбой вашего приложения, там не существует. Он также разработан, чтобы использовать гораздо больше преимуществ локализованных настроек пользователя, чем исходный NSNumberFormatter. Существуют группы методов для ограничения того, что появляется, и тому подобное, при этом все еще используя преимущества предпочтений пользователя. К сожалению, метод setFormat: больше не существует.

...