我想将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;
}
Run Code Online (Sandbox Code Playgroud)
崩溃发生在stringFromNumber调用上.
我究竟做错了什么?
提前致谢.
Gonso
你没有初始化局部变量formatter,所以它被初始化了堆栈上剩下的任何垃圾,并且初始if (!formatter)测试失败了.在C/C++/Objective-C中,堆栈变量不会自动初始化为零.修复方法是显式初始化formatter为nil:
static NSNumberFormatter *formatter = nil;
Run Code Online (Sandbox Code Playgroud)
另请注意,通过声明它static,它将持续跨函数调用,因此您不必为每次调用重新初始化它.
| 归档时间: |
|
| 查看次数: |
568 次 |
| 最近记录: |