如何在体积 HKUnits 之间进行转换?

How to convert between volumetric HKUnits?

我目前正致力于在我的应用程序中添加对体积单位的本地化支持。例如,我希望能够从液体盎司变为升,然后再变回来。基本上我想支持 HKUnit 支持的所有体积单位.dietaryWater

A​​pple 确实说过 "You can request the value from a quantity object in any compatible units.",但非常不清楚如何做到这一点。 (link)

如何在不自己编写数学的情况下进行单元之间的对话?

Foundation 包含一个允许进行多种单位转换的 Measurement 结构。例如,从液体盎司转换为升:

let fluidOz = 32.0
let liters = Measurement(value: fluidOz, unit: UnitVolume.fluidOunces).converted(to: .liters).value
print(liters) // 0.946352

let degrees = 45.0
let radians = Measurement(value: degrees, unit: UnitAngle.degrees).converted(to: .radians).value
print(radians) // 0.7853981633974483

除了UnitVolume,还有UnitSpeedUnitMass等等。

https://developer.apple.com/documentation/foundation/measurement

根据您提供的 link,在使用单位下:

var value = HKQuantity(unit: .fluidOunceUS(), doubleValue: 42)
var convertedValue = value.doubleValue(for: .liter())

https://developer.apple.com/documentation/healthkit/hkquantity/1615245-doublevalue