“通用”>“语言与地区”>“温度单位”下设置“温度单位”选项的功能。 我的应用如何以编程方式确定此设置,以便显示正确的温度单位?我浏览了 NSLocale.h,没有-6ren">
gpt4 book ai didi

ios - 确定用户在 iOS 10 上的 "Temperature Unit"设置(摄氏度/华氏度)

转载 作者:技术小花猫 更新时间:2023-10-29 11:13:41 25 4
gpt4 key购买 nike

iOS 10 增加了用户在“设置”>“通用”>“语言与地区”>“温度单位”下设置“温度单位”选项的功能。

我的应用如何以编程方式确定此设置,以便显示正确的温度单位?我浏览了 NSLocale.h,没有看到任何相关内容。

(在 iOS 10 之前,测试语言环境是否使用公制并假设公制用户想要使用 Celsius 就足够了。现在不再是这种情况了。)

最佳答案

有一个 (NS)MeasurementFormatter 类。它继承自 (NS)Formatter 类。这是适用于 iOS 10+ SDK 的新类。

我不确定是否有必要知道用户在他们的偏好中设置了什么单位。

使用Swift 3设置测量:

let formatter = MeasurementFormatter()
let measurement = Measurement(value: 24.5, unit: UnitTemperature.celsius)
let temperature = formatter.string(from: measurement)
print(temperature) // 76.1°F
// this value was computed to Fahrenheit value on my locale/preferences

对于 Measurement检索:

print(measurement.unit) // °C - always celsius as it was set as Celsius

formatter.unitStyle = .long

formatter.locale = Locale.current
formatter.string(from: measurement.unit) // degrees Celsius - always an original unit
formatter.string(from: measurement) // 76.1 degrees Fahrenheit - regarding locale/settings

formatter.locale = Locale.init(identifier: "it_IT")
formatter.string(from: measurement.unit) // gradi Celsius - always an original unit
formatter.string(from: measurement) // 24,5 gradi Celsius - regarding locale/settings

系统知道,我们设置了什么单位。它将处理所有值转换工作,因为值被设置为一对值和度量单位

对于手动转换:

measurement.converted(to: UnitTemperature.kelvin).value  // 297.65

swift :

https://developer.apple.com/reference/foundation/measurementformatter

objective-C :

https://developer.apple.com/reference/foundation/nsmeasurementformatter?language=objc


随时纠正语法。

关于ios - 确定用户在 iOS 10 上的 "Temperature Unit"设置(摄氏度/华氏度),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39727075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com