iphone - telefono - Convertir códigos de país en nombres de países
como cambiar mi numero de telefono en apple id (5)
Necesito convertir una lista de códigos de país a una matriz de país. Esto es lo que he hecho hasta ahora.
- (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];
}
En Swift 3, la superposición de Foundation cambió bastante.
let countryName = Locale.current.localizedString(forRegionCode: countryCode)
Si desea nombres de países en diferentes idiomas, puede especificar la configuración regional deseada:
let locale = Locale(identifier: "es_ES") // Country names in Spanish
let countryName = locale.localizedString(forRegionCode: countryCode)
En iOS 9 y superior, puede recuperar el nombre del país desde el código del país haciendo lo siguiente:
NSString *countryName = [[NSLocale systemLocale] displayNameForKey:NSLocaleCountryCode value:countryCode];
Donde countryCode
es obviamente el código del país. (por ejemplo: "US")
Esto funcionará en 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];
}
Hice una biblioteca simple que resuelve su caso de uso: https://github.com/mywaystar/swift-locales-code
print(IsoLocaleCodes.find(key: "NL").name) //Dutch
Puede obtener un identificador para un código de país con localeIdentifierFromComponents:
y luego obtener su información.
Así que para crear una matriz con nombres de países puedes hacer:
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];
}
Para ordenarlo alfabéticamente puedes añadir
NSArray *sortedCountries = [countries sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
Tenga en cuenta que la matriz ordenada es inmutable.