2015-11-17 14 views
1

Как я могу получить символ валюты по коду валюты, когда устройство в любой локали?iOS Как получить символ валюты по коду валюты?

Я пытаюсь использовать что-то вроде этого:

- (NSLocale *)priv_findLocaleByCurrencyCode:(NSString *)currencyCode 
{ 
    NSArray *locales = [NSLocale availableLocaleIdentifiers]; 
    NSLocale *locale = nil; 

    for (NSString *localeId in locales) { 
     locale = [[NSLocale alloc] initWithLocaleIdentifier:localeId]; 
     NSString *code = [locale objectForKey:NSLocaleCurrencyCode]; 
     if ([code isEqualToString:currencyCode]) 
      break; 
     else 
      locale = nil; 
    } 
    return locale; 
} 

- (NSString *)findCurrencySymbolByCode:(NSString *)currencyCode 
{ 
    NSNumberFormatter *fmtr = [[NSNumberFormatter alloc] init]; 
    NSLocale *locale = [self priv_findLocaleByCurrencyCode:currencyCode]; 
    NSString *currencySymbol; 
    if (locale) 
     [fmtr setLocale:locale]; 
    [fmtr setNumberStyle:NSNumberFormatterCurrencyStyle]; 
    currencySymbol = [fmtr currencySymbol]; 

    return currencySymbol; 
} 

Пример:

[self findCurrencySymbolByCode:@"PLN"]; 

Но если я в русской локали, и попытаться найти символ для кода валюты PLN я получить - PLN, вместо Символ «zl». Поскольку NSLocale имеет два локали для PL - en_PL и pl_PL, и я не знал, как проверить не так.

Может быть, это еще один путь, чтобы сделать это?

ответ

0

Я думаю, что ваш код валюты или символ отличается, чем вы думаете .. Смотрите этот link

Замените следующую строку

locale = [[NSLocale alloc] initWithLocaleIdentifier:localeId]; 

с

locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_PL"]; 

Проверка с выше кодом.

+0

Мой код - PLN, это правильно – Nubaslon

+0

@Nubaslon - тогда ваша валюта Злотый –

+0

Да, но символ curency это - «PLN» вместо «ZL», мне нужно «ZL» – Nubaslon

Смежные вопросы