您好我正在尝试从货币格式的数组中转换indexPath.row中的字符串。以下是我的代码。但是当我在手机上运行时,lbl中没有任何内容 - 它是空白的。感谢帮助!谢谢!
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
NSString *groupingSeparator = [[NSLocale currentLocale] objectForKey:NSLocaleGroupingSeparator];
[formatter setGroupingSeparator:groupingSeparator];
[formatter setGroupingSize:3];
[formatter setAlwaysShowsDecimalSeparator:NO];
[formatter setMaximumFractionDigits:0]; //No decimal showings - to show 2 decimal digits enter 2 instead of 0
[formatter setUsesGroupingSeparator:YES];
totalnoformat = [[NSNumber alloc]init];
totalSCformat = [[NSString alloc]init];
totalnoformat = [total objectAtIndex:indexPath.row];
totalSCformat = [formatter stringFromNumber:totalnoformat];
cell.amountlbl.text = totalSCformat;
答案 0 :(得分:0)
您的代码有几个您可能想要清理的问题。以下是一些建议。
您的数字格式化程序不应在内部初始化
cellForRowAtIndexPath:
因为它每次都会创建一个新的
细胞初始化或出列。使格式化程序成为属性
您的视图控制器并在viewDidLoad
中初始化一次。
您对alloc / init的调用:
totalnoformat = [[NSNumber alloc]init];
totalSCformat = [[NSString alloc]init];
是不必要的。你应该删除它们。
您应确保已正确初始化total
数组,并确实已将值添加到其中。在此行设置一个断点:
totalnoformat = [total objectAtIndex:indexPath.row];
当它中断时,将鼠标指针悬停在total
变量上
并查看调试器所说的内存地址是什么。如果它是
0x0000,然后它是零并且尚未初始化。同样的
鼠标悬停在变量上的技巧也会告诉你多少
项目在数组中。
您似乎已创建自定义单元格。你有几个潜力
这样做的问题。您需要确保自定义单元格
将其类设置为您的自定义单元类名称。你也有
确保您已将amountlbl
财产与之相关联
插座,否则设置其文本将无能为力。
如果没有别的办法,可能是您的电话号码存在问题 格式化。注释掉您设置的所有格式化程序属性 并尝试这样的小事:
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
然后尝试使用如下静态数字设置单元格文本:
cell.amountlbl.text = [formatter stringFromNumber:
[NSNumber numberWithFloat:4.75]];