2017-08-04 2 views
3

Ich versuche, die Benutzereinstellung Systemeinstellungen für Temperatureinheit (Celsius/Fahrenheit) zu lesen. Ich habe versucht, diese Daten mit NSLocale zu bekommen, aber ich kann keinen Hinweis auf eine Temperatureinstellung darin finden.Benutzer bevorzugte Temperatureinstellung in MacOS

Ist es überhaupt möglich, diese Daten zu lesen?

Danke!

+0

Dupe:

let key = "AppleTemperatureUnit" as CFString let domain = "Apple Global Domain" as CFString if let unit = CFPreferencesCopyValue(key, domain, kCFPreferencesCurrentUser, kCFPreferencesAnyHost) as? String { print(unit) } else { print("Temperature unit not found") } 

Wenn Sie sich fragen, wie ich es gefunden habe, habe ich das defaults Dienstprogramm im Terminal verwendet [ „Temperatur des Benutzers ermitteln Gerät "Einstellung auf iOS 10 (Celsius/Fahrenheit)" (https://stackoverflow.com/q/39727075/2415822) – JAL

+1

Mögliches Duplikat von [Bestimmen Sie die "Temperature Unit" -Einstellung des Benutzers unter iOS 10 (Celsius/Fahrenheit)] (https : //stackoverflow.com/questions/39727075/determi ne-users-temperature-unit-setting-on-ios-10-celsius-Fahrenheit) – CRD

+0

Kein Duplikat, da die verknüpfte Frage iOS adressiert, während sich diese Frage an macOS richtet –

Antwort

4

Die offizielle API steht unter der Preferences Utilities dokumentiert:

> defaults find temperature 
Found 1 keys in domain 'Apple Global Domain': { 
    AppleTemperatureUnit = Fahrenheit; 
} 
Found 1 keys in domain 'com.apple.ncplugin.weather': { 
    WPUseMetricTemperatureUnits = 1; 
} 
2

Dies ist ein bisschen wie ein Hack, aber Sie können auf macOS 10.12+ und iOS es auf diese Weise tun 10+:

// Create a formatter. 
let formatter = MeasurementFormatter() 

// Create a dummy temperature, the unit doesn't matter because the formatter will localise it. 
let dummyTemp = Measurement(value: 0, unit: UnitTemperature.celsius) 

let unit = formatter.string(from: dummyTemp).characters.last // -> F 

Diese gibt „F“ in meinem Spielplatz der standardmäßig auf die US-locale. Aber ändern Sie Ihr Gebietsschema oder verwenden Sie diesen Code auf einem Gerät und Sie erhalten die länderspezifische Temperatureinheit - oder die Zeichenfolge dafür.

Verwandte Themen