2014-12-29 5 views
0

Я хотел бы использовать методы:Как получить NSAttributedString из NSNumberFormatter?

- setTextAttributesForPositiveValues:

- setTextAttributesForNegativeValues:

Как это:

[nf setTextAttributesForPositiveValues:@{[UIColor colorWithRed:0.3 green:0.6 blue:1.0 alpha:1.0]:NSForegroundColorAttributeName}];

и

[nf setTextAttributesForNegativeValues:@{[UIColor colorWithRed:1.0 green:0.1 blue:1.0 alpha:1.0]:NSForegroundColorAttributeName}];

Я пытаюсь получить приписываемый текст, как это:

NSAttributedString *str = [self.salaryFormatterColors attributedStringForObjectValue:@"Hi there" withDefaultAttributes:nil];

Но я получаю обратно ноль.

Как я могу вернуть атрибутный текст?

+0

Почему вы ожидаете получить что-нибудь значимое от ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** * –

+0

Ха, это хороший момент. – KKendall

+0

@ Paul.s Я поставил @ (30), а не строку, и он ничего не делает. Это то, что вы имели в виду под своим комментарием? – KKendall

ответ

1

Крекинг открытого Хоппера, кажется, что IOS NSNumberFormatter безоговорочно возвращает nil от -attributedStringForObjectValue:withDefaultAttributes: от прошивки 9. Я не могу найти ни одного упоминания об этом в документации, так что это полезно и, вероятно, стоит радара.

Ваш лучший выбор - подкласс NSNumberFormatter и осуществить -attributedStringForObjectValue:withDefaultAttributes: самостоятельно. В справочнике NSFormatter приведены некоторые варианты реализации:

При реализации подкласса возвращайте объект NSAttributedString, если строка для отображения должна иметь некоторые атрибуты. Например, вы можете захотеть, чтобы отрицательные значения в финансовом приложении отображались в красном тексте. Вызовите вашу реализацию stringForObjectValue: чтобы получить непривязанную строку, затем создайте с ней объект NSAttributedString (см. InitWithString :). Использование словаря атрибутов по умолчанию, чтобы сбросить атрибуты строки при изменении значения гарантирует его (например, отрицательное значение становится положительным)

И я полагаю, вы можете подать радар запрашивающего выполнение этой функции для прошивки ,

Редактировать: Я пошел вперед и внедрил такой форматировщик в this gist.