iOS如何通过货币代码获取货币符号?

时间:2015-11-17 12:09:11

标签: ios xcode nslocale

当设备在任何区域设置中时,如何通过货币代码获取货币符号?

我尝试使用这样的东西:

- (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的两个语言环境,我不知道如何检查没错。

可能是另一条道路吗?

1 个答案:

答案 0 :(得分:0)

我认为您的货币代码或符号与您的想法不同。请参阅此link

替换以下行

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

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

检查上面的代码。