来自货币标识符的主要ISO国家代码(或`NSLocale`)? (即不使用货币的按字母顺序排列的第一个国家)

时间:2016-03-29 06:05:03

标签: objective-c localization currency nslocale

因此,请考虑以下功能:

+ (NSLocale *)localeWithCurrencyCode:(NSString *)currencyCode
{
    for (NSString *localeIdentifier in [NSLocale availableLocaleIdentifiers])
    {
        NSLocale *locale=[[NSLocale alloc] initWithLocaleIdentifier:localeIdentifier];

        if ([[locale objectForKey:NSLocaleCurrencyCode] isEqualToString:currencyCode])
        {
            return locale;

        }

    }
    ////

    return [[NSLocale alloc] initWithLocaleIdentifier:[NSLocale localeIdentifierFromComponents:[NSDictionary dictionaryWithObject:currencyCode forKey:NSLocaleCurrencyCode]]]; // For some codes that locale cannot be found, initialize manually!

}

这种作品,但它并没有按照预期的方式发挥作用。因为其他国家共享货币(例如,美元用于巴拿马,厄瓜多尔等)......它按字母顺序返回所述货币的第一个国家,这是不正确的。

是否有更好的方法来构建某种类似的功能,而不为每种货币合并主要国家/地区的某种外部或第三方数据库? 希望避免外部依赖。

0 个答案:

没有答案