Iphone, Obtention d'une list de pays dans un NSArray

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

Est-ce que quelqu'un connaît un moyen simple d'get une list de pays? J'ai utilisé NSLocale pour générer un éventail de pays, mais ce n'est que l'indicatif de pays malheureusement et pas l'équivalent humain lisible. Je ne veux pas 'GB' Je veux la Grande-Bretagne.

Utilisez [[NSLocale currentLocale] displayNameForKey:NSLocaleCountryCode value:countryCode] (où countryCode est un élément de votre list de codes de pays) pour get le nom du pays dans les parameters régionaux actuels de l'user.

Merci chuck.

Si quelqu'un est intéressé ou veut find la même solution, voici mon code pour un tableau sortingé de pays.

Objectif c:

 NSLocale *locale = [NSLocale currentLocale]; NSArray *countryArray = [NSLocale ISOCountryCodes]; NSMutableArray *sortedCountryArray = [[NSMutableArray alloc] init]; for (NSSsortingng *countryCode in countryArray) { NSSsortingng *displayNameSsortingng = [locale displayNameForKey:NSLocaleCountryCode value:countryCode]; [sortedCountryArray addObject:displayNameSsortingng]; } [sortedCountryArray sortUsingSelector:@selector(localizedCompare:)]; 

Rapide:

 let locale = NSLocale.currentLocale() let countryArray = NSLocale.ISOCountryCodes() var unsortedCountryArray:[Ssortingng] = [] for countryCode in countryArray { let displayNameSsortingng = locale.displayNameForKey(NSLocaleCountryCode, value: countryCode) if displayNameSsortingng != nil { unsortedCountryArray.append(displayNameSsortingng!) } } let sortedCountryArray = sorted(unsortedCountryArray, <) 

Swift 3

  let locale = NSLocale.current let unsortedCounsortinges = NSLocale.isoCountryCodes.map { locale.localizedSsortingng(forRegionCode: $0)! } let sortedCounsortinges = unsortedCounsortinges.sorted() 

Vous pourriez vouloir définir les parameters régionaux.
et il y a trop de memory autoreleased, ce qui pourrait être critique, vous ne savez jamais. Créez donc un pool autoreleased à l'intérieur de la boucle for. J'ai ceci:

 NSMutableArray * counsortingesArray = [[NSMutableArray alloc] init]; NSLocale *locale = [[[NSLocale alloc] initWithLocaleIdentifier: @"en_US"] autorelease]; NSArray *countryArray = [NSLocale ISOCountryCodes]; for (NSSsortingng *countryCode in countryArray) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; NSSsortingng *displayNameSsortingng = [locale displayNameForKey:NSLocaleCountryCode value:countryCode]; [counsortingesArray addObject:displayNameSsortingng]; [pool release]; } [counsortingesArray sortUsingSelector:@selector(compare:)]; 

Swift 3

 let locale = Locale.current let counsortinges = Locale.isoRegionCodes.map { locale.localizedSsortingng(forRegionCode: $0)! }.sorted() 

À peu près la même réponse que ci-dessus, utilise simplement flatMap pour être plus court et plus rapide.

 let locale = NSLocale.currentLocale() var counsortinges = NSLocale.ISOCountryCodes().flatMap { countryCode in return locale.displayNameForKey(NSLocaleCountryCode, value: countryCode) } counsortinges.sortInPlace() 

Vous avez celui qui travaille sur les terrains de jeux

 let locale = NSLocale(localeIdentifier: "FI") let unsortedCounsortinges = NSLocale.isoCountryCodes.flatMap { locale.localizedSsortingng(forCountryCode: $0) } let sortedCounsortinges = unsortedCounsortinges.sorted()