如何解决如何快速从 HealthKit 获取氧饱和度?
我想要 2 位十进制数的氧饱和度。但我在除以 100 后得到它。这意味着查询返回 HKQuantity
,但我需要双倍的百分比值。我无法准确解释。让我们看看我尝试过的代码片段:
public func getOxygenLevel(completion: @escaping (Double?,Error?) -> Void) {
guard let oxygenQuantityType = HKQuantityType.quantityType(forIdentifier: .oxygenSaturation) else {
fatalError("*** Unable to get oxygen saturation on this device ***")
}
HKHealthStore().requestAuthorization(toShare: nil,read: [oxygenQuantityType]) { (success,error) in
guard error == nil,success == true else {
completion(nil,error)
return
}
let predicate = HKQuery.predicateForSamples(withStart: Date.distantPast,end: Date(),options: .strictEndDate)
let query = HKStatisticsQuery(quantityType: oxygenQuantityType,quantitySamplePredicate: predicate,options: .mostRecent) { query,result,error in
DispatchQueue.main.async {
if let err = error {
completion(nil,err)
} else {
guard let level = result,let sum = level.mostRecentQuantity() else {
completion(nil,error)
return
}
print("Quantity : ",sum) // It prints 97 % and I need 97 only
let measureUnit0 = HKUnit(from: "%")
let count0 = sum.doubleValue(for: measureUnit0)
print("Count 0 : ",count0) // It pronts 0.97 and I need 97 only
let measureUnit1 = HKUnit.count().unitMultiplied(by: HKUnit.percent())
let count1 = sum.doubleValue(for: measureUnit1)
print("Count 1 : ",count1) // It pronts 0.97 and I need 97 only
let measureUnit2 = HKUnit.percent()
let count2 = sum.doubleValue(for: measureUnit2)
print("Count 2 : ",count2) // It pronts 0.97 and I need 97 only
let measureUnit3 = HKUnit.count()
let count3 = sum.doubleValue(for: measureUnit3)
print("Count 3 : ",count3) // It pronts 0.97 and I need 97 only
completion(count0 * 100.0,nil)
}
}
}
HKHealthStore().execute(query)
}
}
解决方法
文档说 Percent measures a value between 0.0 and 1.0
- 所以期望乘以 100
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。