Сбой iPhone NSNumberFormatter - PullRequest
0 голосов
/ 08 мая 2009

Я хочу отформатировать 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 Ответ

5 голосов
/ 08 мая 2009

Вы не инициализируете локальную переменную formatter, поэтому она инициализируется с любым мусором, оставшимся в стеке, и первоначальный тест if (!formatter) не проходит. В C / C ++ / Objective-C переменные стека НЕ ​​автоматически инициализируются нулем. Исправление заключается в явной инициализации formatter для nil:

static NSNumberFormatter *formatter = nil;

Также обратите внимание, что, объявив его как static, он будет сохраняться при вызове функций, поэтому вы не будете повторно инициализировать его для каждого вызова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...