2013-08-21 54 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"; 
相关问题