Iphone, एक NSArray में देशों की सूची प्राप्त करने

वोट
42

मैं एक मेनू है कि चलो एक उपयोगकर्ता एक देश का चयन है की है। वास्तव में है कि पता क्षेत्र के भीतर contacts.app देश मेनू में की तरह।

किसी को भी उन देशों की सूची प्राप्त करने की एक आसान तरीका पता है? मैं NSLocale का इस्तेमाल किया है देशों की एक सरणी उत्पन्न करने के लिए लेकिन यह केवल देश कोड दुर्भाग्य और नहीं मानव पठनीय बराबर है। मैं 'जीबी' नहीं चाहता मैं चाहता हूँ ग्रेट ब्रिटेन है।

02/02/2009 को 11:22
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


6 जवाब

वोट
92

धन्यवाद चक।

अगर कोई रुचि रखता है या एक ही समाधान खोजने के लिए करना चाहता था यहाँ देशों का एक क्रमबद्ध सरणी के लिए अपने कोड है।

उद्देश्य सी:

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, <)

स्विफ्ट 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](जहां देश कोड देश कोड की अपनी सूची में एक आइटम है) उपयोगकर्ता की वर्तमान स्थान में देश के नाम मिलता है।

02/02/2009 को 12:04
का स्रोत उपयोगकर्ता

वोट
15

आप स्थान निर्धारित कर सकते हैं ..
और वहाँ बहुत ज्यादा 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

स्विफ्ट 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