将国家代码转换为国家/地区名称
我需要将国家代码列表转换为国家/地区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
显然是国家代码。 (如:“美国”)