2017-01-07 2 views
2

Wenn ich die aktuelle locales Kennung auf iOS anfordern, gibt es nur die Kennung string:Warum enthält NSLocale.current.identifier Währung auf MacOS?

let identifier = NSLocale.current.identifier // en_GB 

jedoch auf macOS 10.12.2 es gibt auch die Währung:

let identifier = NSLocale.current.identifier // [email protected]=GBP 

Ist das ein Bug oder erwartetes Verhalten?

+0

Gibt es einen geeigneteren Weg zum Bezeichner wie 'en_GB',' en_US'? – squarefrog

+0

Ich sehe das nicht auf macOS 10.12.2. Sind Sie sicher, dass das Popupmenü Systemeinstellungen> Sprache & Region> Region "United Kingdom" und nicht "United Kingdom (Custom)" oder etwas ähnliches anzeigt? Wenn Sie auf die Schaltfläche Erweitert unten im Fenster klicken, ist die Option Standard wiederherstellen aktiviert? Wenn Sie darauf klicken und erneut testen, ist das Problem immer noch vorhanden? –

+0

Interessant. Es wurde auf "United Kingom (Custom)" eingestellt. Das hat mich jedoch dazu gebracht, meinen Ansatz zu überdenken. – squarefrog

Antwort

0

Ich denke, die beste Option für mich ist hier, den Code selbst zu generieren. Um mit diesem habe ich eine Erweiterung erstellt auf Locale:

extension Locale { 
    var iso3166code: String { 
     guard 
      let language = languageCode, 
      let region = regionCode 
      else { return "en-US" } 
     return "\(language)-\(region)" 
    } 
} 

Während diese genau genug für meine Zwecke ist, sollten Sie wahrscheinlich sicherstellen es erwarteten Werte für Ihr Projekt zurückgibt.