gpt4 book ai didi

ios - 使用 MeasurementFormatter 选择单位

转载 作者:可可西里 更新时间:2023-11-01 06:21:25 25 4
gpt4 key购买 nike

这类似于 question I asked yesterday但我得到的答案在这种情况下似乎不起作用。

我从 Core Location 获取以米为单位的高度值。我想以本地化形式显示这些。例如,我现在所在的海拔高度为 1839 米。这应该显示为 6033 英尺。我可以用 MeasurementFormatter 做的最好的事情是“1.143 英里”。

let meters : Double = 1839
let metersMeasurement = Measurement(value: meters, unit: UnitLength.meters)

let measurementFormatter = MeasurementFormatter()
measurementFormatter.locale = Locale(identifier: "en_US")

let localizedString = measurementFormatter.string(from: metersMeasurement)

回答我之前问题的 .naturalScale 选项在这里没有帮助。我认为这是框架的限制,但我想知道目前是否有人有解决方法。

最佳答案

您只需将 UnitLength 从米转换为英尺。您还可以创建自定义美国测量格式化程序以根据需要显示它:

extension Measurement where UnitType == UnitLength {
private static let usFormatted: MeasurementFormatter = {
let formatter = MeasurementFormatter()
formatter.locale = Locale(identifier: "en_US")
formatter.unitOptions = .providedUnit
formatter.numberFormatter.maximumFractionDigits = 0
formatter.unitStyle = .long
return formatter
}()
var usFormatted: String { Measurement.usFormatted.string(from: self) }
}

Playground

let value: Double = 1839
let meters: Measurement<UnitLength> = .init(value: value, unit: .meters)
let feet = meters.converted(to: .feet)
let formatted = feet.usFormatted
print(formatted) // "6,033 feet"\n

关于ios - 使用 MeasurementFormatter 选择单位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39858828/

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