Iphone 将数组中indexpath.row中的NSString格式化为货币格式

Iphone 将数组中indexpath.row中的NSString格式化为货币格式,iphone,Iphone,您好,我正在尝试将indexPath.row中的字符串转换为货币格式的数组。下面是我的代码。但是当我在手机上运行时,lbl中没有显示任何内容-它是空白的。谢谢你的帮助!谢谢 NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; [formatter setNumberStyle:NSNumberFormatterCurrencyStyle]; NSString *g

您好,我正在尝试将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;

您的代码有几个问题需要解决。这里有一些建议

  • 您的数字格式化程序不应在内部初始化
    cellForRowAtIndexPath:
    ,因为每次新建一个 已初始化或退出队列中的单元格。使格式化程序成为的属性 在
    viewDidLoad
    中初始化视图控制器一次

  • 您对alloc/init的调用:

    totalnoformat = [[NSNumber alloc]init];
    totalSCformat = [[NSString alloc]init];
    
    没有必要。你应该去掉那些

  • 您应该确保您的
    total
    数组已正确初始化,并且实际添加了值。在此直线上设置断点:

    totalnoformat = [total objectAtIndex:indexPath.row];
    
    当它中断时,将鼠标指针悬停在
    total
    变量上 然后查看调试器所说的内存地址。如果是 0x0000,则为零,尚未初始化。同样的 将鼠标移到变量上的技术也会告诉您有多少个变量 项目在数组中

  • 看起来您已经创建了一个自定义单元格。你有两个潜力 这样做的问题。您需要确保您的自定义单元格 已将其类设置为自定义单元格类名。你也有 确保已将
    amountlbl
    属性连接到 outlet,否则设置其文本将无效

  • 如果没有别的办法,也许你的电话号码有问题 格式化程序。注释掉您设置的所有格式化程序属性 试着做一些像这样的小动作:

    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
    [formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
    
    cell.amountlbl.text = [formatter stringFromNumber:
                                            [NSNumber numberWithFloat:4.75]];
    
    然后尝试将单元格文本设置为静态数字,如下所示:

    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
    [formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
    
    cell.amountlbl.text = [formatter stringFromNumber:
                                            [NSNumber numberWithFloat:4.75]];
    

  • 你能给我们更多关于什么是“总计”的信息吗?总计是我需要格式化字符串的数组,你确定元素是NSNumber类中的对象吗?是的,数组中的对象是NSNumbers中的对象。你能编辑添加填充单元格的完整代码吗?