Iphone, få en liste over land i en NSArray

stemmer
43

Jeg har en meny som lar finnes en bruker velge et land. Akkurat sånn i contacts.app landet menyen i adressefeltet.

Er det noen som vet en enkel måte å få en liste over land? Jeg har brukt NSLocale å generere en rekke land, men det er bare de landkoder dessverre og ikke lesbar tilsvarende. Jeg ønsker ikke 'N' Jeg vil Great Britain.

Publisert på 02/02/2009 klokken 10:22
kilden bruker
På andre språk...                            


6 svar

stemmer
93

Takket chuck.

Hvis noen er interessert eller ønsket å finne den samme løsningen her er min kode for en sortert rekke land.

Objective-C:

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:)];

Fort:

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

Swift 3

    let locale = NSLocale.current
    let unsortedCountries = NSLocale.isoCountryCodes.map { locale.localizedString(forRegionCode: $0)! }
    let sortedCountries = unsortedCountries.sorted()
Svarte 02/02/2009 kl. 11:09
kilden bruker

stemmer
38

Bruk [[NSLocale currentLocale] displayNameForKey:NSLocaleCountryCode value:countryCode](der country er et element i listen over landskoder) for å få landets navn i brukerens gjeldende locale.

Svarte 02/02/2009 kl. 11:04
kilden bruker

stemmer
15

Du ønsker kanskje å definere locale ..
og det er for mye autoreleased minne, som kan være kritisk, da vet aldri. så skape autoreleased basseng inne i sløyfen for også. Jeg har denne:

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:)];
Svarte 07/04/2010 kl. 10:37
kilden bruker

stemmer
2

Swift 3

let locale = Locale.current
let countries = Locale.isoRegionCodes.map {
    locale.localizedString(forRegionCode: $0)!
}.sorted()
Svarte 13/10/2016 kl. 06:07
kilden bruker

stemmer
0

Ble dette en arbeider på lekeplasser

let locale = NSLocale(localeIdentifier: "FI")
let unsortedCountries = NSLocale.isoCountryCodes.flatMap { locale.localizedString(forCountryCode: $0) }
let sortedCountries = unsortedCountries.sorted()
Svarte 13/09/2017 kl. 07:48
kilden bruker

stemmer
0

Ganske mye det samme svaret som ovenfor, bruker bare flatMapå være kortere og swiftier.

let locale = NSLocale.currentLocale()
var countries = NSLocale.ISOCountryCodes().flatMap { countryCode in
    return locale.displayNameForKey(NSLocaleCountryCode, value: countryCode)
}
countries.sortInPlace()
Svarte 13/05/2016 kl. 14:49
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more