NSString *countryCode = [[NSLocale currentLocale] objectForKey: NSLocaleCountryCode];
liefert Ihnen einen Bezeichner wie z.B. "US" (Vereinigte Staaten), "ES" (Spanien), etc.
In Swift 3:
let countryCode = NSLocale.current.regionCode
In Swift 2.2:
let countryCode = NSLocale.currentLocale().objectForKey(NSLocaleCountryCode) as String
Verglichen mit einer Lösung, die auf CLLocationManager basiert, hat dieser Ansatz Vor- und Nachteile. Der Hauptnachteil besteht darin, dass dies nicht garantiert, dass dies der tatsächliche Standort des Geräts ist, wenn der Benutzer es anders konfiguriert. Dies kann jedoch auch als Vorteil gesehen werden, da es stattdessen zeigt, mit welchem Land ein Benutzer geistig/kulturell verbunden ist - also wenn ich z.B. im Urlaub ins Ausland gehe, ist die Gebietsschema immer noch auf mein Heimatland eingestellt. Ein ziemlich großer Vorteil ist jedoch, dass diese API keine Benutzerberechtigung erfordert, wie es bei CLLocationManager der Fall ist. Wenn Sie also noch keine Erlaubnis zum Verwenden des Standorts des Benutzers erhalten haben und nicht wirklich rechtfertigen können, einen Popup-Dialog dem Benutzer vorzulegen (oder wenn sie diesen Popup bereits abgelehnt haben und Sie eine Alternative benötigen), dann ist dies wahrscheinlich die API, die Sie verwenden möchten. Einige typische Anwendungsfälle hierfür könnten Personalisierung (z.B. kulturell relevante Inhalte, Standardformate etc.) und Analysen sein.