0

こんにちは、通貨形式の配列で 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;
4

1 に答える 1

0

コードには、クリーンアップする必要のあるいくつかの問題があります。ここにいくつかの提案があります。

  1. 数値フォーマッタは cellForRowAtIndexPath:、初期化またはデキューされるたびに新しいセルを作成するため、内部で初期化しないでください。フォーマッタをViewControllerのプロパティにし、で1回初期化しますviewDidLoad

  2. alloc / initへの呼び出し:

    totalnoformat = [[NSNumber alloc]init];
    totalSCformat = [[NSString alloc]init];
    

    不要です。それらを削除する必要があります。

  3. total配列が適切に初期化されており、値が実際に配列に追加されていることを確認する必要があります。この行にブレークポイントを設定します。

    totalnoformat = [total objectAtIndex:indexPath.row];
    

    壊れたら、マウスポインターをtotal変数に合わせて、デバッガーがメモリアドレスをどのように表示するかを確認します。0x0000の場合、それはnilであり、初期化されていません。変数をマウスで操作する同じ手法により、配列内のアイテムの数もわかります。

  4. カスタムセルを作成したようです。これを行うには、いくつかの潜在的な問題があります。カスタムセルのクラスがカスタムセルクラス名に設定されていることを確認する必要があります。また、プロパティをコンセントに接続していることを確認する必要があります。接続してamountlblいない場合、テキストを設定しても何も起こりません。

  5. 他に何も機能しない場合は、数値フォーマッタに問題がある可能性があります。設定したすべてのフォーマッタプロパティをコメントアウトして、次のような最小限のプロパティを試してください。

    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
    [formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
    

    次に、次のような静的な数値を使用してセルテキストを設定してみてください。

    cell.amountlbl.text = [formatter stringFromNumber:
                                            [NSNumber numberWithFloat:4.75]];
    
于 2012-10-04T22:41:01.527 に答える