Сбой 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, он будет сохраняться при вызове функций, поэтому вы не будете повторно инициализировать его для каждого вызова.

Другие вопросы по тегам