首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从货币代码中获取NSLocale?

如何从货币代码中获取NSLocale?
EN

Stack Overflow用户
提问于 2011-08-02 15:52:21
回答 4查看 4.8K关注 0票数 7

我正在尝试这样做:

代码语言:javascript
复制
NSDictionary *components = [NSDictionary dictionaryWithObject:@"USD" forKey:NSLocaleCurrencyCode];
NSString *localeIdentifier = [NSLocale localeIdentifierFromComponents:components];
NSLocale *localeForDefaultCurrency = [[NSLocale alloc] initWithLocaleIdentifier:localeIdentifier];

它创建NSLocale对象,但不包含任何区域信息。例如,

代码语言:javascript
复制
[localeForDefaultCurrency objectForKey:NSLocaleCountryCode];

返回nil;

你知道如何从货币代码中获取NSLocale吗?

EN

回答 4

Stack Overflow用户

发布于 2013-06-09 08:31:23

正如一些访客在pastebin中发布的那样:

代码语言:javascript
复制
NSDictionary *components = [NSDictionary dictionaryWithObject:@"USD" forKey:NSLocaleCurrencyCode];
NSString *localeIdentifier = [NSLocale localeIdentifierFromComponents:components];
NSLocale *localeForDefaultCurrency = [[NSLocale alloc] initWithLocaleIdentifier:localeIdentifier];

[localeForDefaultCurrency objectForKey:NSLocaleCountryCode];
票数 8
EN

Stack Overflow用户

发布于 2013-12-24 02:34:02

代码语言:javascript
复制
    NSDictionary *localeInfo = @{NSLocaleCurrencyCode: currencyCode, NSLocaleLanguageCode: [[NSLocale preferredLanguages] objectAtIndex:0]};

    NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:
                        [NSLocale localeIdentifierFromComponents:localeInfo]];
票数 6
EN

Stack Overflow用户

发布于 2012-07-20 16:31:33

有一些技巧,比如用id创建语言环境,而不是像"en_US“这样的普通语言环境id,传递给它货币代码" usd "," eur”等,它似乎适用于欧元和美元,在某种程度上我可以检查它,但这是错误的方式。

我知道的唯一正确的方法是获取所有地区,然后在循环中检查它们的货币代码,以便与您拥有的货币代码进行比较。这样,当你找到你的代码时,你就会停止循环。

代码语言:javascript
复制
- (NSLocale *) findLocaleByCurrencyCode:(NSString *)_currencyCode
{
        NSArray *locales = [NSLocale availableLocaleIdentifiers];
        NSLocale *locale = nil;
        NSString *localeId;

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

        /* For some codes that locale cannot be found, init it different way. */
        if (locale == nil) {
                NSDictionary *components = [NSDictionary dictionaryWithObject:_currencyCode
                                                                       forKey:NSLocaleCurrencyCode];

                localeId = [NSLocale localeIdentifierFromComponents:components];
                locale = [[NSLocale alloc] initWithLocaleIdentifier:localeId];
        }
        return locale;
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6908834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档