当设备在任何区域设置中时,如何通过货币代码获取货币符号?
我尝试使用这样的东西:
- (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 :(得分:0)
我认为您的货币代码或符号与您的想法不同。请参阅此link
替换以下行
locale = [[NSLocale alloc] initWithLocaleIdentifier:localeId];
与
locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_PL"];
检查上面的代码。