2013-08-21 74 views
0

我有UILabel在其中我想顯示$也工作正常,但問題是,它在模擬器上正常工作,但是當我在設備上測試此代碼而不是$它顯示Rs(Rupess)任何想法如何解決這個問題。NSNumberFormatter給出錯誤的貨幣

NSNumber *number=[[NSNumber alloc]initWithInt:1000]; 


    NSString *No = [NSNumberFormatter localizedStringFromNumber:number numberStyle:NSNumberFormatterCurrencyStyle]; 
    NSLog(@"%@", No); 

    UILabel * text=[NSString stringWithFormat:@"%@",No]; 

    NSLog(@"%@",text); 
+0

問題是與您的手機設置... – IronManGill

回答

1

因爲默認情況下,格式化程序將使用在其上運行的設備上指定的區域設置。如果要強制顯示某個特定畫面,則需要使用setLocale:並提供適當的NSLocale實例。

+0

如何使用SETLOCAL和NSLocal請幫我 –

+4

@NativeDeveloper,讓我給你介紹谷歌:http://www.google.com。 –

+0

有一整套文檔。你不會爲這個社區準備好代碼。 –

1

沒有問題。

  1. 當您使用localizedStringFromNumberNSNumberFormatterCurrencyStyle格式化數它給你的數字格式,按您的區域。
  2. 如果你去你的模擬器Setting - General - International - Region Format。它必須是美國。因此它在模擬器上運行時顯示$。
  3. 如果您在設備中檢查相同的東西。它會將區域格式顯示爲印度。因此,它顯示了Rs。標誌。
  4. 如果您想要看到$符號,請繼續並更改設備中的設置。
+0

無需更改設備我們不能更改代碼而不是使用任何其他 –

+0

localizedString您設置的代碼是完美的。這是格式化金額的完美方式。 – Rushi

0

你,因爲在設備得到這個問題的設置 - >通用> international-> reion格式 - >是印度

只是將其更改爲您所選擇的國家一樣,如果你想那麼$符號選擇美國

1

我懷疑你是否想將[NSString stringWithFormat:@"%@",No]的結果設置爲UILabel實例。

其他答案似乎是最有可能的,選擇正確的設備區域設置,並使用您現有的代碼以本地格式輸出值。

但是,如果有人有興趣與任意的貨幣格式輸出數量:

NSNumber *number = [NSNumber numberWithInt:1000]; 

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle]; 
[formatter setCurrencyCode:@"INR"]; 

NSString *text = [formatter stringFromNumber:number]; 

NSLog(@"%@", text); 

// Release formatter as required 

雖然你爲什麼會做這個,而不是僅僅使用貨幣符號和基本字符串我不知道: p

NSString *text = @"₹1,000.00"; 
相關問題