2017-08-04 14 views
3

に、ユーザ好ましい温度の設定を取得します。 NSLocaleを使用してこのデータを取得しようとしましたが、そこに温度設定のエビデンスが見つかりません。私は温度単位(摂氏/華氏)のためのユーザー設定システム環境設定を読み込むしようとしているMacOSの

が、このデータを読み取ることさえ可能ですか?

ありがとうございます!

+0

デュープ:

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") } 

あなたは私がそれを見つけたか疑問に思うならば、私はターミナルでdefaultsユーティリティを使用し、[ユーザーの「温度を決定「iOSの10(摂氏/華氏)](https://stackoverflow.com/q/39727075/2415822)の – JAL

+1

可能な複製に設定し、[ユーザーの決定 "単位iOSの10に設定温度単位"(摂氏/華氏)](HTTPSを://stackoverflow.com/questions/39727075/determi NE-ユーザー-温度単位設定オンIOS-10-摂氏 - 華氏) – CRD

+0

ませ重複していない。この質問は、MacOSのに対処しながら、リンク質問は、iOSをアドレスとして –

答えて

4

公式APIがPreferences Utilitiesの下で文書化されています

> 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

これはハックのビットですが、あなたはそれをMacOSの10.12+とiOS 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 

これは、米国のロケールにデフォルトで私の遊び場に「F」を出力します。しかし、あなたのロケールを変更するか、このコードをデバイスで使用すると、ロケール固有の温度単位またはそれに対応する文字列が取得されます。

関連する問題