将国家代码转换为国家/地区名称

我需要将国家代码列表转换为国家/地区arrays。 这是我迄今为止所做的。

- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. pickerViewArray = [[NSMutableArray alloc] init]; //pickerViewArray is of type NSArray; pickerViewArray =[NSLocale ISOCountryCodes]; } 

您可以使用localeIdentifierFromComponents:获取国家/地区代码的标识符,然后获取其displayName

所以要创build一个国名的数组,你可以这样做:

 NSMutableArray *countries = [NSMutableArray arrayWithCapacity: [[NSLocale ISOCountryCodes] count]]; for (NSString *countryCode in [NSLocale ISOCountryCodes]) { NSString *identifier = [NSLocale localeIdentifierFromComponents: [NSDictionary dictionaryWithObject: countryCode forKey: NSLocaleCountryCode]]; NSString *country = [[NSLocale currentLocale] displayNameForKey: NSLocaleIdentifier value: identifier]; [countries addObject: country]; } 

要按字母顺序sorting,可以添加

 NSArray *sortedCountries = [countries sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)]; 

请注意,sorting的数组是不可变的。

这将在iOS8中工作:

 NSArray *countryCodes = [NSLocale ISOCountryCodes]; NSMutableArray *tmp = [NSMutableArray arrayWithCapacity:[countryCodes count]]; for (NSString *countryCode in countryCodes) { NSString *country = [[NSLocale systemLocale] displayNameForKey:NSLocaleCountryCode value:countryCode]; [tmp addObject: country]; } 

在Swift 3中,基础覆盖层发生了很大的变化。

 let countryName = Locale.current.localizedString(forRegionCode: countryCode) 

如果你想用不同语言的国家名称,你可以指定所需的区域设置:

 let locale = Locale(identifier: "es_ES") // Country names in Spanish let countryName = locale.localizedString(forRegionCode: countryCode) 

在iOS 9及以上版本中,您可以通过执行以下操作来从国家/地区代码中检索国家/

 NSString *countryName = [[NSLocale systemLocale] displayNameForKey:NSLocaleCountryCode value:countryCode]; 

countryCode显然是国家代码。 (如:“美国”)