43 votes

Iphone, Obtenir une liste des pays dans un NSArray

J'ai un menu qui permet à un utilisateur de sélectionner un pays. Exactement comme cela dans le menu pays de contacts.app dans le champ d'adresse.

Est-ce que quelqu'un connaît un moyen simple d'obtenir une liste de pays? J'ai utilisé NSLocale pour générer un éventail de pays, mais ce ne sont malheureusement que les codes de pays et non l'équivalent lisible par l'homme. Je ne veux pas de «GB», je veux la Grande-Bretagne.

94voto

Dan Morgan Points 1085

Merci chuck.

Si quelqu'un est intéressé ou veut trouver la même solution, voici mon code pour un éventail trié de pays:

 NSLocale *locale = [NSLocale currentLocale];
NSArray *countryArray = [NSLocale ISOCountryCodes];

NSMutableArray *sortedCountryArray = [[NSMutableArray alloc] init];

for (NSString *countryCode in countryArray) {

    NSString *displayNameString = [locale displayNameForKey:NSLocaleCountryCode value:countryCode];
    [sortedCountryArray addObject:displayNameString];

}


[sortedCountryArray sortUsingSelector:@selector(localizedCompare:)];
 

38voto

Chuck Points 138930

Utilisez [[NSLocale currentLocale] displayNameForKey:NSLocaleCountryCode value:countryCode] (où countryCode est un élément de votre liste de codes de pays) pour obtenir le nom du pays dans les paramètres régionaux actuels de l'utilisateur.

15voto

Mk.zRealDeal Points 121

Vous voudrez peut-être définir les paramètres régionaux.
et il y a trop de mémoire autoreleased, ce qui pourrait être critique, vous ne savez jamais. Créez donc également un pool autoreleased dans la boucle for. J'ai ceci:

 NSMutableArray * countriesArray = [[NSMutableArray alloc] init]; 
NSLocale *locale = [[[NSLocale alloc] initWithLocaleIdentifier: @"en_US"] autorelease];

NSArray *countryArray = [NSLocale ISOCountryCodes]; 
for (NSString *countryCode in countryArray) 
{
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    NSString *displayNameString = [locale displayNameForKey:NSLocaleCountryCode value:countryCode];
    [countriesArray addObject:displayNameString];
    [pool release];

}

[countriesArray sortUsingSelector:@selector(compare:)];
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X