Skip to content

Provides ISO codes, names and currencies for countries.

Notifications You must be signed in to change notification settings

icesco/IsoCountryCodes

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 

Repository files navigation

IsoCountryCodes for Swift

Platform version Swift Version

Iso country codes - that thing that we discussed that defines codes for the names of countries, dependent territories, and special areas of geographical interest.

What?

This is a iOS Swift library/class files that does a simple lookup depending on a alpha2, alpha3 or numeric value you give it. Currently it holds all the 249 countries, territories, or areas of geographical interest that are assigned official codes in ISO 3166-1.

Features:

This library returns ISO codes, names and currencies for countries.

  • Find by alpha-2, alpha-3 or numeric (String - yes I know...)
  • Search by (partial) name, case- and diacritic insensitive
  • Search by currency code
  • Search by phone dialing code (+31 for Netherlands, +1 for USA, etc...)
  • Retrieve a corresponding emoji flag for a country code.
  • Retrieve a fraction digits or decimal places for a country's currency. This can be useful when converting an amount in a certain currency to digits (ex 1 euro = 100 cent, 1 KD = 1000 fils)

Usage:

You can search via numeric, alpha-2 or alpha-3 format. Searching an ISO code returns a struct.

print(IsoCountryCodes.find(key: "020").name) //Andorra
print(IsoCountryCodes.find(key: "TK").name) //Tokelau
print(IsoCountryCodes.find(key: "TKL").currency) //NZD

You can also search by country name, currency or calling/dialing code:

dump(IsoCountryCodes.searchByName("Netherlands")
print(IsoCountryCodes.searchByCurrency("EUR").count ) // 31
print(IsoCountryCodes.searchByCallingCode("+31").first ) // Netherlands

let country = IsoCountryCodes.searchByName("Netherlands")
dump(country) // This dumps the full struct in console

This returns a IsoCountryInfo struct:

 IsoCountryCodes.IsoCountryInfo
    - name: Netherlands
    - numeric: 528
    - alpha2: NL
    - alpha3: NLD
    - calling: +31
    - currency: EUR
    - continent: EU

Searching by name is case- and diacritic insensitive:

dump(IsoCountryCodes.searchByName("netherlands"))
dump(IsoCountryCodes.searchByName("NETHERLANDS"))

dump(IsoCountryCodes.searchByName("Réunion"))
dump(IsoCountryCodes.searchByName("Reunion"))

If no full match is found, a partial match is tried:

// Full name is "Venezuela, Bolivarian Republic of"
dump(IsoCountryCodes.searchByName("Venezuela"))

but nothing is returned if the search results would be ambiguous:

// There are two Virgin Islands country codes:
// "Virgin Islands, British" and "Virgin Islands, U.S."
dump(IsoCountryCodes.searchByName("Virgin Islands"))

Fun with flags

Retrieve a corresponding emoji flag from a country code. (Thanks to @lorismaz for this addition)

let emojiString = IsoCountries.flag(countryCode: "NL")
// Prints 🇳🇱

or

let emojiString = IsoCountryCodes.find(key: "USA").flag
// Prints 🇺🇸

Retrieve fractional digits

Retrieve fractional digits or decimal places for a country's currency. This can be useful when converting an amount in a certain currency to digits. For example calculating how many cents go into 1 euro (100 cent), or in Kuwaiti dinar; 1 KD = 1000 fils. This is convenient when working with banks or payment providers. (Thanks to @mohameditani for this addition).

func transformToDigits(price: Double, country: IsoCountryInfo) -> Double {
  let fractionDigits = country.fractionDigits
  let amount = price * pow(10.0, Double(fractionDigits))
  return amount
}

let priceOfCoffee = 2.05
let country = IsoCountryCodes.searchByName("Italy") // fractionDigits for Italy is 2
let digits = transformToDigits(priceOfCoffee, country)
// 205 cents

Usage:

Copy/add files to your project

Licence:

The 'do-whatever-you-please-with-it licence. Use it or abuse it. Just keep my name at the top of the files.

About

Provides ISO codes, names and currencies for countries.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Swift 100.0%