2013-08-21 3 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, позвольте мне представить вам Google: http://www.google.com. –

+0

Существует целый набор документации. Вы не получите готовый код для этого в этом сообществе. –

1

Нет проблем.

  1. Как вы используете localizedStringFromNumber и NSNumberFormatterCurrencyStyle форматировать число это дает вам формат номера, как в вашем регионе.
  2. Если вы перейдете к своему симулятору Setting - General - International - Region Format. Это должно быть Соединенные Штаты. Следовательно, он показывает $, когда вы запускаете его на симуляторе.
  3. Если вы отметили то же самое на своем устройстве. Он отобразит Region Format как Индия. Следовательно, он показывает Rs. знак.
  4. Если вы хотите увидеть знак $, просто перейдите и измените настройку на устройстве.
+0

без изменения с устройства не можем мы изменить код вместо localizedString использовать любые другие –

+0

Код, который вы установили, является идеальным. Это идеальный способ форматирования суммы. – 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 

Хотя почему вы могли бы сделать это вместо того, чтобы просто использовать символ валюты и основной строки я не уверен: р

NSString *text = @"₹1,000.00"; 
Смежные вопросы