在macOS中获取用户首选的温度设置

Get user preferred temperature setting in macOS

提问人:Mike Nathas 提问时间:8/5/2017 更新时间:8/5/2017 访问量:839

问:

我正在尝试读取用户为温度单位(摄氏度/华氏度)设置的系统首选项。 我试图使用 NSLocale 获取这些数据,但我找不到任何温度设置的证据。

甚至可以读取这些数据吗?

谢谢!

Swift Xcode 粉底 液温度

评论

0赞 JAL 8/5/2017
欺骗:确定用户在iOS 10上的“温度单位”设置(摄氏度/华氏度)
1赞 CRD 8/5/2017
iOS 10(摄氏度/华氏度)上确定用户的“温度单位”设置可能重复
0赞 Mike Nathas 8/5/2017
没有重复,因为链接的问题针对 iOS,而此问题针对 macOS

答:

3赞 Abizern 8/5/2017 #1

这有点黑客,但您可以在 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

这将在我的 playground 中输出“F”,默认为美国语言环境。但是更改您的区域设置或在设备上使用此代码,您将获得特定于区域设置的温度单位 - 或者无论如何都包含它的字符串。

4赞 Code Different 8/5/2017 #2

官方 API 记录在 Preferences Utilities 下:

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

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