Сбой iPhone NSNumberFormatter
Я хочу отформатировать NSDecimalNumber как значение в долларах ($1,50), но я получаю сбой.
Это мой метод:
+(NSString*) formatPriceForUser:(NSDecimalNumber*)dPrice{
NSNumberFormatter *formatter;
if (!formatter) {
formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[formatter setMaximumIntegerDigits:6];
[formatter setMaximumFractionDigits:2];
}
NSString* str = [formatter stringFromNumber:dPrice];
return str;
}
Сбой происходит при вызове stringFromNumber.
Что я делаю неправильно?
Заранее спасибо.
Gonso
1 ответ
Решение
Вы не инициализируете локальную переменную formatter
, так что он инициализируется с тем, что мусор остается в стеке, и начальный if (!formatter)
тест не пройден В C/C++/Objective-C переменные стека НЕ автоматически инициализируются нулем. Исправление заключается в явной инициализации formatter
в nil
:
static NSNumberFormatter *formatter = nil;
Также обратите внимание, что объявив его как static
, он будет сохраняться при вызове функций, поэтому вы не будете повторно инициализировать его для каждого вызова.