Подтвердить что ты не робот

Является ли NSNumberFormatter единственным способом форматирования NSDecimalNumber?

Я использую NSDecimalNumber для хранения денег в Core Data. Я наивно использовал stringWithFormat: сначала для форматирования значения, позже понимая, что он не поддерживает NSDecimalNumber и вместо этого форматировал указатель:( Поэтому после некоторого чтения через документы я научился использовать NSNumberFormatter, чтобы получить желаемый формат. Но это просто поражает меня как "трудный путь". Есть ли более простой способ, чем это:?

NSNumberFormatter * formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle: NSNumberFormatterCurrencyStyle];
priceField.text = [formatter stringFromNumber: ent.price];
[formatter release];
4b9b3361

Ответ 1

Нет ничего плохого в этом подходе, и это обычный шаблон для преобразования непрозрачных классов чисел в строки.

Если у меня есть UIView, который часто использует форматтер, у меня обычно будет один экземпляр, поэтому я не буду повторно использовать alloc/init/release форматтер.

Ответ 2

на iOS 4.0, а затем вы можете использовать этот метод:

NSString* currencyString = [NSNumberFormatter 
                                 localizedStringFromNumber:number
                                 numberStyle:NSNumberFormatterCurrencyStyle];

Ответ 3

NSNumberFormatter может быть дорогостоящим, почему бы просто не вызвать [ent descriptionWithLocale:]

Ответ 4

Просто преобразуйте его в double и используйте "F"

[NSString stringWithFormat: @ "% 1.2F", [ent doubleValue]];