2017-01-27 8 views
2

私は、ユーザーに電話番号を尋ねる国の選択ツールがあり、ユーザーは国番号を入力する必要があります。iOS地域の国コード「ヨーロッパ」を決定する

ヌルの国コード値をテストしているうちに、何とかiOS 10.2.1のiPhoneにという地域フォーマットが設定されていることがわかりました。

私がそれを検索すると、ヨーロッパ地域は地域リストに存在しません。

私は現在のロケールの国コード

NSLocale *currentLocale = [NSLocale currentLocale]; 
return [currentLocale objectForKey:NSLocaleCountryCode] 

を取得しようとすると、私は、少なくとも私のデバイス上で、ユーザーの国を決定するのに有用ではありませんどのen_150を取得します。返された国コードはで、存在しません。

私は回避策がCTTelephonyNetworkInfo

if(![currentLocale objectForKey:NSLocaleCountryCode]) { 
    CTCarrier *carrier = [[CTTelephonyNetworkInfo new] subscriberCellularProvider]; 
    NSString *countryCode = carrier.isoCountryCode; 

    return [countryCode capitalizedString]; 
} 

を使用して国コードを見つけることが判明しかし、どのようにそれは、このヨーロッパのロケールでは動作しない、なぜ私はそれがこのように設定されていますか?

答えて

1

まず、ヨーロッパは大陸ではなく、大陸です。国コードはありません。しかし、それは地域コードを持っています。その地域コードは確かに150です。

大陸には、「世界」の場合は001、「ヨーロッパの場合」は150の数値コードがあります。

さらに詳しい説明については、私の記事「Are there standard language codes for ‘World English’ and ‘European English’」を必ず読んでください。これらのコードは、ISO 3166の基礎となる国連M.49に基づいています。これは、あなたが「国コード」と言ったときに考えている標準です。

あなたが直面している問題は、は、自分の物理的な場所を決定するために他人の言語や書式設定を使用できないということです。現在のデバイスのロケールはen_DKですが、私の物理的な場所はNOです。多くのデバイスはデフォルトでen_USに設定されており、世界中のユーザーはデフォルト設定を変更しません。

CoreLocationを使用してユーザーの場所を自動的に判断するか、ユーザーにその場所の公開を依頼してください。

関連する問題