我正在尝试这样做:
NSDictionary *components = [NSDictionary dictionaryWithObject:@"USD" forKey:NSLocaleCurrencyCode];
NSString *localeIdentifier = [NSLocale localeIdentifierFromComponents:components];
NSLocale *localeForDefaultCurrency = [[NSLocale alloc] initWithLocaleIdentifier:localeIdentifier];它创建NSLocale对象,但不包含任何区域信息。例如,
[localeForDefaultCurrency objectForKey:NSLocaleCountryCode];返回nil;
你知道如何从货币代码中获取NSLocale吗?
发布于 2013-06-09 08:31:23
正如一些访客在pastebin中发布的那样:
NSDictionary *components = [NSDictionary dictionaryWithObject:@"USD" forKey:NSLocaleCurrencyCode];
NSString *localeIdentifier = [NSLocale localeIdentifierFromComponents:components];
NSLocale *localeForDefaultCurrency = [[NSLocale alloc] initWithLocaleIdentifier:localeIdentifier];
[localeForDefaultCurrency objectForKey:NSLocaleCountryCode];发布于 2013-12-24 02:34:02
NSDictionary *localeInfo = @{NSLocaleCurrencyCode: currencyCode, NSLocaleLanguageCode: [[NSLocale preferredLanguages] objectAtIndex:0]};
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:
[NSLocale localeIdentifierFromComponents:localeInfo]];发布于 2012-07-20 16:31:33
有一些技巧,比如用id创建语言环境,而不是像"en_US“这样的普通语言环境id,传递给它货币代码" usd "," eur”等,它似乎适用于欧元和美元,在某种程度上我可以检查它,但这是错误的方式。
我知道的唯一正确的方法是获取所有地区,然后在循环中检查它们的货币代码,以便与您拥有的货币代码进行比较。这样,当你找到你的代码时,你就会停止循环。
- (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;
}https://stackoverflow.com/questions/6908834
复制相似问题