iosobjective-cswiftcurrencynslocale

Get Currency Symbol based on Country code or Country name using NSLocale


I want to display Currency Symbol based on Country name or country code using NSLocale I have all the country name list. suppose I have selected USA then it Return $ Currency

Code :

 NSLocale *locale = [NSLocale currentLocale];
 NSString *countryCode = [locale objectForKey: NSLocaleCountryCode];
 NSString *country = [locale displayNameForKey: NSLocaleCurrencyCode value: countryCode];

Solution

  • You can build your own list of country codes and that country's currency symbol using the following code:

    Objective-C:

    - (void)listCountriesAndCurrencies {
        NSArray<NSString *> *localeIds = [NSLocale availableLocaleIdentifiers];
        NSMutableDictionary<NSString *, NSString *> *countryCurrency = [NSMutableDictionary dictionary];
        for (NSString *localeId in localeIds) {
            NSLocale *locale = [NSLocale localeWithLocaleIdentifier:localeId];
    
            NSString *country = [locale objectForKey: NSLocaleCountryCode];
            if (country && country.length == 2) {
                NSString *currency = [locale objectForKey: NSLocaleCurrencySymbol];
                countryCurrency[country] = currency;
            }
        }
    
        NSArray<NSString *> *sorted = [countryCurrency.allKeys sortedArrayUsingSelector:@selector(compare:)];
        for (NSString *country in sorted) {
            NSString *currency = countryCurrency[country];
    
            NSLog(@"country: %@, currency: %@", country, currency);
        }
    }
    

    This code starts with the list of all locale ids. From there it creates each associated NSLocale. For each locale, the country code and currency symbol is extracted. These are used to build a dictionary of country codes and currency symbols which are then printed out.

    Here's the same code translated to Swift 3:

    func listCountriesAndCurrencies() {
        let localeIds = Locale.availableIdentifiers
        var countryCurrency = [String: String]()
        for localeId in localeIds {
            let locale = Locale(identifier: localeId)
    
            if let country = locale.regionCode, country.characters.count == 2 {
                if let currency = locale.currencySymbol {
                    countryCurrency[country] = currency
                }
            }
        }
    
        let sorted = countryCurrency.keys.sorted()
        for country in sorted {
            let currency = countryCurrency[country]!
    
            print("country: \(country), currency: \(currency)")
        }
    }
    

    This results in the following list when run on a simulated iOS 10 device:

    country: AD, currency: €
    country: AE, currency: د.إ.‏
    country: AF, currency: ؋
    country: AG, currency: $
    country: AI, currency: $
    country: AL, currency: Lekë
    country: AM, currency: ֏
    country: AO, currency: Kz
    country: AR, currency: $
    country: AS, currency: $
    country: AT, currency: €
    country: AU, currency: $
    country: AW, currency: Afl.
    country: AX, currency: €
    country: AZ, currency: ₼
    country: BA, currency: KM
    country: BB, currency: $
    country: BD, currency: ৳
    country: BE, currency: €
    country: BF, currency: CFA
    country: BG, currency: лв.
    country: BH, currency: د.ب.‏
    country: BI, currency: FBu
    country: BJ, currency: CFA
    country: BL, currency: €
    country: BM, currency: $
    country: BN, currency: $
    country: BO, currency: Bs
    country: BQ, currency: $
    country: BR, currency: R$
    country: BS, currency: $
    country: BT, currency: Nu.
    country: BW, currency: P
    country: BY, currency: р.
    country: BZ, currency: $
    country: CA, currency: $
    country: CC, currency: $
    country: CD, currency: FC
    country: CF, currency: FCFA
    country: CG, currency: FCFA
    country: CH, currency: CHF
    country: CI, currency: CFA
    country: CK, currency: $
    country: CL, currency: $
    country: CM, currency: FCFA
    country: CN, currency: ¥
    country: CO, currency: $
    country: CR, currency: ₡
    country: CU, currency: $
    country: CV, currency: ​
    country: CW, currency: NAf.
    country: CX, currency: $
    country: CY, currency: €
    country: CZ, currency: Kč
    country: DE, currency: €
    country: DG, currency: US$
    country: DJ, currency: Fdj
    country: DK, currency: kr.
    country: DM, currency: $
    country: DO, currency: RD$
    country: DZ, currency: د.ج.‏
    country: EA, currency: €
    country: EC, currency: $
    country: EE, currency: €
    country: EG, currency: ج.م.‏
    country: EH, currency: د.م.‏
    country: ER, currency: Nfk
    country: ES, currency: €
    country: ET, currency: Br
    country: FI, currency: €
    country: FJ, currency: $
    country: FK, currency: £
    country: FM, currency: US$
    country: FO, currency: kr
    country: FR, currency: €
    country: GA, currency: FCFA
    country: GB, currency: £
    country: GD, currency: $
    country: GE, currency: ₾
    country: GF, currency: €
    country: GG, currency: £
    country: GH, currency: GH₵
    country: GI, currency: £
    country: GL, currency: kr.
    country: GM, currency: D
    country: GN, currency: FG
    country: GP, currency: €
    country: GQ, currency: FCFA
    country: GR, currency: €
    country: GT, currency: Q
    country: GU, currency: $
    country: GW, currency: CFA
    country: GY, currency: $
    country: HK, currency: HK$
    country: HN, currency: L
    country: HR, currency: HRK
    country: HT, currency: G
    country: HU, currency: HUF
    country: IC, currency: €
    country: ID, currency: Rp
    country: IE, currency: €
    country: IL, currency: ₪
    country: IM, currency: £
    country: IN, currency: ₹
    country: IO, currency: US$
    country: IQ, currency: IQD
    country: IR, currency: IRR
    country: IS, currency: ISK
    country: IT, currency: €
    country: JE, currency: £
    country: JM, currency: $
    country: JO, currency: د.أ.‏
    country: JP, currency: ¥
    country: KE, currency: Ksh
    country: KG, currency: сом
    country: KH, currency: ៛
    country: KI, currency: $
    country: KM, currency: CF
    country: KN, currency: $
    country: KP, currency: KPW
    country: KR, currency: ₩
    country: KW, currency: د.ك.‏
    country: KY, currency: $
    country: KZ, currency: ₸
    country: LA, currency: ₭
    country: LB, currency: ل.ل.‏
    country: LC, currency: $
    country: LI, currency: CHF
    country: LK, currency: Rs.
    country: LR, currency: $
    country: LS, currency: R
    country: LT, currency: €
    country: LU, currency: €
    country: LV, currency: €
    country: LY, currency: د.ل.‏
    country: MA, currency: MAD
    country: MC, currency: €
    country: MD, currency: L
    country: ME, currency: €
    country: MF, currency: €
    country: MG, currency: Ar
    country: MH, currency: $
    country: MK, currency: den
    country: ML, currency: CFA
    country: MM, currency: K
    country: MN, currency: ₮
    country: MO, currency: MOP$
    country: MP, currency: $
    country: MQ, currency: €
    country: MR, currency: UM
    country: MS, currency: $
    country: MT, currency: €
    country: MU, currency: Rs
    country: MV, currency: MVR
    country: MW, currency: MK
    country: MX, currency: $
    country: MY, currency: RM
    country: MZ, currency: MTn
    country: NA, currency: $
    country: NC, currency: FCFP
    country: NE, currency: CFA
    country: NF, currency: $
    country: NG, currency: ₦
    country: NI, currency: C$
    country: NL, currency: €
    country: NO, currency: kr
    country: NP, currency: नेरू
    country: NR, currency: $
    country: NU, currency: $
    country: NZ, currency: $
    country: OM, currency: ر.ع.‏
    country: PA, currency: B/.
    country: PE, currency: S/.
    country: PF, currency: FCFP
    country: PG, currency: K
    country: PH, currency: ₱
    country: PK, currency: Rs
    country: PL, currency: PLN
    country: PM, currency: €
    country: PN, currency: $
    country: PR, currency: $
    country: PS, currency: ₪
    country: PT, currency: €
    country: PW, currency: US$
    country: PY, currency: Gs.
    country: QA, currency: ر.ق.‏
    country: RE, currency: €
    country: RO, currency: RON
    country: RS, currency: RSD
    country: RU, currency: RUB
    country: RW, currency: RF
    country: SA, currency: ر.س.‏
    country: SB, currency: $
    country: SC, currency: SR
    country: SD, currency: SDG
    country: SE, currency: kr
    country: SG, currency: $
    country: SH, currency: £
    country: SI, currency: €
    country: SJ, currency: kr
    country: SK, currency: €
    country: SL, currency: Le
    country: SM, currency: €
    country: SN, currency: CFA
    country: SO, currency: S
    country: SR, currency: $
    country: SS, currency: £
    country: ST, currency: Db
    country: SV, currency: $
    country: SX, currency: NAf.
    country: SY, currency: ل.س.‏
    country: SZ, currency: E
    country: TC, currency: US$
    country: TD, currency: FCFA
    country: TG, currency: CFA
    country: TH, currency: THB
    country: TJ, currency: сом
    country: TK, currency: $
    country: TL, currency: US$
    country: TM, currency: TMT
    country: TN, currency: د.ت.‏
    country: TO, currency: T$
    country: TR, currency: TRY
    country: TT, currency: $
    country: TV, currency: $
    country: TW, currency: NT$
    country: TZ, currency: TSh
    country: UA, currency: ₴
    country: UG, currency: USh
    country: UM, currency: $
    country: US, currency: $
    country: UY, currency: $
    country: UZ, currency: soʻm
    country: VC, currency: $
    country: VE, currency: Bs.
    country: VG, currency: US$
    country: VI, currency: $
    country: VN, currency: ₫
    country: VU, currency: VT
    country: WF, currency: FCFP
    country: WS, currency: WS$
    country: XK, currency: €
    country: YE, currency: ر.ي.‏
    country: YT, currency: €
    country: ZA, currency: R
    country: ZM, currency: K
    country: ZW, currency: US$