2012-10-04 64 views
0

您好我試圖從貨幣格式的數組中的indexPath.row轉換字符串。以下是我的代碼。但是當我在手機上運行時,lbl中沒有顯示 - 它是空白的。幫助表示讚賞!謝謝!!從一個數組中的indexpath.row格式化NSString到貨幣格式

  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

你能給我們提供關於什麼是「全部」的更多信息嗎? – LuisEspinoza

+0

Total是從中我需要一個字符串格式的數組 –

+0

而且,你確定這些元素是來自NSNumber類的對象嗎? – LuisEspinoza

回答

0

您的代碼有幾個問題可能需要清理。這裏有一些建議。

  1. 您的電話號碼格式不應該內部 cellForRowAtIndexPath:進行初始化,因爲它會在初始化或出隊每一次創建一個新的 細胞。使格式化程序成爲您的視圖控制器的一個屬性 ,並在viewDidLoad中對其初始化一次。

  2. 您對分配/初始化電話:

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

    是不必要的。你應該刪除這些。

  3. 您應確保您的total數組已正確初始化,並且值實際上已被添加到它。在該行設置一個斷點:

    totalnoformat = [total objectAtIndex:indexPath.row]; 
    

    當它打破,將鼠標指針懸停在total變量 看到調試器說什麼它的內存地址。如果它是 0x0000,那麼它是零並且尚未初始化。相同的 鼠標懸停在變量上的技術也會告訴你有多少個 項目在數組中。

  4. 看起來您已經創建了自定義單元格。這樣做有一些潛在的問題 。您需要確保您的自定義單元格 已將其類設置爲您的自定義單元類名稱。您還有 以確保您已將amountlbl媒體資源連接到 插座,否則設置其文本將不會執行任何操作。

  5. 如果沒有其他的工作,也許有一個問題與您的號碼 格式化。註釋掉所有的格式屬性你設置 並嘗試這樣的東西最少的:

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

    ,然後嘗試用一個靜態的數字像這樣設置你的文字:

    cell.amountlbl.text = [formatter stringFromNumber: 
                 [NSNumber numberWithFloat:4.75]];