什么类型的HealthKit装置用于VO2 Max测量? - 斯威夫特4

问题描述 投票:3回答:1

我正在使用Apple的HealthKit在Swift 4中编写一个应用程序。我正在尝试写入“VO2 Max”指标,但我不确定使用哪个单位。在Health App本身中,单位列为“mL /(kg * min)”,但在Apple的文档here中我没有看到类似的内容。我的代码看起来像这样。我该怎么代替???在第二行?

writeHKMetric = HKQuantityType.quantityType(forIdentifier: HKQuantityTypeIdentifier.vo2Max)!
writeHKQuantity = HKQuantity.init(unit: HKUnit.???, doubleValue: 1)

(作为参考,写入的代码,比方说,Cycling Distance看起来像这样。注意“HKUnit.mile()”)

writeHKMetric = HKQuantityType.quantityType(forIdentifier: HKQuantityTypeIdentifier.distanceCycling)!
writeHKQuantity = HKQuantity.init(unit: HKUnit.mile(), doubleValue: 1)

当我尝试使用另一个指标,比如计数时,我收到此错误:

2017-12-14 22:08:01.876935-0500 Stand Hours 2.0[478:76005] *** Terminating app due to uncaught exception '_HKObjectValidationFailureException', reason: 'HKQuantitySample 1 count  (2017-12-08 08:00:00 -0500 - 2017-12-08 08:00:00 -0500) requires unit of type Volume/Mass·Time. Incompatible unit: count'

但我不知道如何将我的单位设置为“音量/质量*时间”。

ios swift health-kit
1个回答
3
投票

单位乐趣。 HKUnit有单位乘法和除法的方法。

以下代码构建所需的单元。

let kgmin = HKUnit.gramUnit(with: .kilo).unitMultiplied(by: .minute())
let mL = HKUnit.literUnit(with: .milli)
let VO₂Unit = mL.unitDivided(by: kgmin)

let writeHKMetric = HKQuantityType.quantityType(forIdentifier: HKQuantityTypeIdentifier.vo2Max)!
let writeHKQuantity = HKQuantity(unit: VO₂Unit, doubleValue: 1)
print(writeHKQuantity)

输出:

1 mL / min·kg

一个不太有趣但更简单的解决方案(感谢Allan)创建该单元的目的是:

let VO₂Unit = HKUnit(from: "ml/kg*min")
© www.soinside.com 2019 - 2024. All rights reserved.