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

iOS如何通过货币代码获取货币符号?,ios,xcode,nslocale,Ios,Xcode,Nslocale,当设备处于任何区域设置时,如何通过货币代码获取货币符号 我试着用这样的方法: - (NSLocale *)priv_findLocaleByCurrencyCode:(NSString *)currencyCode { NSArray *locales = [NSLocale availableLocaleIdentifiers]; NSLocale *locale = nil; for (NSString *localeId in locales) {

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

我试着用这样的方法:

- (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,我不知道如何检查是否正确


可能是另一种途径吗?

我认为您的货币代码或符号与您想象的不同。。参考此

替换以下行

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


检查上述代码。

@Nubaslon-那么您的货币是波兰兹罗提,但当前符号是“PLN”而不是“zl”,我需要“zl”更新答案。。检查一下,如果不工作请告诉我,并用您正在使用的ios版本回复。如果我使用“en_PL”我得到符号“PLN”,如果使用“PL_PL”-我得到“zl”。但是我怎么才能找到合适的地点呢?iOS 9.1Okie。。我得到了它。。您的设备中首选的语言是英语。所以它总是作为区域设置标识符。如果您将首选语言更改为所需的语言环境,那么它将使用语言环境标识符pl_pl,并且还将显示zl符号。
locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_PL"];