Iphone, Απόκτηση Κατάλογος των χωρών σε NSArray

ψήφοι
42

Έχω ένα μενού που σας επιτρέπουν είναι ο χρήστης επιλέξει μια χώρα. Ακριβώς όπως και ότι στο μενού χώρα contacts.app στο πεδίο διεύθυνσης.

Ξέρει κανείς έναν απλό τρόπο για να πάρει μια λίστα με τις χώρες; Έχω χρησιμοποιήσει NSLocale για να δημιουργήσει μια σειρά από χώρες, αλλά αυτό είναι μόνο οι κωδικοί χώρας, δυστυχώς, και όχι το αναγνώσιμο ισοδύναμο του ανθρώπου. Δεν θέλω «GB» Θέλω Μεγάλη Βρετανία.

Δημοσιεύθηκε 02/02/2009 στις 11:22
πηγή χρήστη
Σε άλλες γλώσσες...                            


6 απαντήσεις

ψήφοι
92

Ευχαριστώ τσοκ.

Αν κάποιος ενδιαφέρεται ή ήθελε να βρει την ίδια λύση εδώ είναι ο κωδικός μου για ένα ταξινομημένο πίνακα των χωρών.

Στόχος-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:)];

Ταχύς:

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()
Απαντήθηκε 02/02/2009 στις 12:09
πηγή χρήστη

ψήφοι
38

Χρησιμοποιήστε [[NSLocale currentLocale] displayNameForKey:NSLocaleCountryCode value:countryCode](όπου countryCode είναι ένα στοιχείο στη λίστα κωδικών χωρών) να πάρει το όνομα της χώρας σε τρέχουσες τοπικές ρυθμίσεις του χρήστη.

Απαντήθηκε 02/02/2009 στις 12:04
πηγή χρήστη

ψήφοι
15

Μπορεί να θέλετε να ορίσετε locale ..
και υπάρχει πάρα πολύ autoreleased μνήμης, η οποία μπορεί να είναι κρίσιμη, εσείς ποτέ δεν ξέρεις. έτσι ώστε να δημιουργήσει autoreleased πισίνα στο εσωτερικό του για το βρόχο, όπως καλά. Έχω το εξής:

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:)];
Απαντήθηκε 07/04/2010 στις 11:37
πηγή χρήστη

ψήφοι
2

Swift 3

let locale = Locale.current
let countries = Locale.isoRegionCodes.map {
    locale.localizedString(forRegionCode: $0)!
}.sorted()
Απαντήθηκε 13/10/2016 στις 06:07
πηγή χρήστη

ψήφοι
0

Πήρε αυτό που εργάζονται για παιδικές χαρές

let locale = NSLocale(localeIdentifier: "FI")
let unsortedCountries = NSLocale.isoCountryCodes.flatMap { locale.localizedString(forCountryCode: $0) }
let sortedCountries = unsortedCountries.sorted()
Απαντήθηκε 13/09/2017 στις 07:48
πηγή χρήστη

ψήφοι
0

Λίγο πολύ η ίδια απάντηση όπως παραπάνω, χρησιμοποιεί απλά flatMapνα είναι μικρότερη και swiftier.

let locale = NSLocale.currentLocale()
var countries = NSLocale.ISOCountryCodes().flatMap { countryCode in
    return locale.displayNameForKey(NSLocaleCountryCode, value: countryCode)
}
countries.sortInPlace()
Απαντήθηκε 13/05/2016 στις 14:49
πηγή χρήστη

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