引
项目需要一个选择国家的列表,想想要自己列出所有国家就够麻烦了,还要适配手机语言就更加是个不可能的任务,后来发现苹果是给出了直接的API来做的,很方便,我加上了大部分国家的国旗,这个是系统没给的,放出来方便大家。
实现
列表怎么实现就不说了,直接说怎么获取国家数组。
NSLocale *locale = [NSLocale currentLocale];
NSArray *countryArray = [NSLocale ISOCountryCodes];
for (NSString *countryCode in countryArray) {
if ([countryCode isEqualToString:@"CN"]) {
[self.countryCodeArray insertObject:countryCode atIndex:0];
NSString *displayNameString = [locale displayNameForKey:NSLocaleCountryCode value:countryCode];
[self.countryArray insertObject:displayNameString atIndex:0];
continue;
}
[self.countryCodeArray addObject:countryCode];
NSString *displayNameString = [locale displayNameForKey:NSLocaleCountryCode value:countryCode];
[self.countryArray addObject:displayNameString];
}
如上面代码,可以直接获取到各个国家的代码,这里会涉及到一个很有意思的地方,如果直接查看 self.countryCodeArray 这个数组,会发现都只是国家代号,但如果去获取他的值,会发现自动变成当前设备语言下的国家名了。
上面代码中 self.countryCodeArray 这个数组是用来存放国家名的,self.countryCodeArray 这个数组是存放国家代码本身的,这是因为我的国旗图片名都是国家代码,所以需要用这个代码来获取图片从而在列表中显示图片。
代码中遇到代号为“CN”的表示是中国,我将它放在列表第一个显示方便选择。
其余的关于列表的代码就很常见啦,不会的可以在工程中查看。
结
希望能帮助到需要的人,这个知识点知道了就很方便,不知道就很麻烦。