Search code examples
iosarraysswiftnslocalecountries

Swift - Get list of countries


How can I get an array with all countries names in Swift? I've tried to convert the code I had in Objective-C, which was this:

if (!pickerCountriesIsShown) {
    NSMutableArray *countries = [NSMutableArray arrayWithCapacity: [[NSLocale ISOCountryCodes] count]];

    for (NSString *countryCode in [NSLocale ISOCountryCodes])
    {
        NSString *identifier = [NSLocale localeIdentifierFromComponents: [NSDictionary dictionaryWithObject: countryCode forKey: NSLocaleCountryCode]];
        NSString *country = [[NSLocale currentLocale] displayNameForKey: NSLocaleIdentifier value: identifier];
        [countries addObject: country];
    }

And in Swift I can't pass from here:

        if (!countriesPickerShown) {
        var countries: NSMutableArray = NSMutableArray()
        countries = NSMutableArray.arrayWithCapacity((NSLocale.ISOCountryCodes).count) // Here gives the Error. It marks NSLocale.ISOCountryCodes and .count

Does anyone of you know about this?

Thanks


Solution

  • First of all ISOCountryCodes requires argument parenthesis so instead it would be ISOCountryCodes(). Second, you dont need parenthesis around NSLocale and ISOCountryCodes(). Also, arrayWithCapacity is deprecated meaning it is removed from the language. A working version of this would be somewhat like this

    if (!countriesPickerShown) {
        var countries = NSMutableArray()
        countries = NSMutableArray(capacity: (NSLocale.ISOCountryCodes().count))
    }