我已经成功地写入HealthKit,但接收这些值总是返回0。我试图返回重量的最新价值。
这是我阅读重量的功能:
public func readWeight(result: @escaping (Double) -> Void) {
print("Weight")
let quantityType = HKQuantityType.quantityType(forIdentifier: HKQuantityTypeIdentifier.bodyMass)
let weightQuery = HKSampleQuery(sampleType: quantityType!, predicate: nil, limit: 1, sortDescriptors: nil) {
query, results, error in
if (error != nil) {
print(error!)
result(0.0)
}
guard let results = results else {
print("No results of query")
result(0.0)
return
}
if (results.count == 0) {
print("Zero samples")
result(0.0)
return
}
guard let bodymass = results[0] as? HKQuantitySample else {
print("Type problem with weight")
result(0.0)
return
}
result(bodymass.quantity.doubleValue(for: HKUnit.pound()))
}
healthKitStore.execute(weightQuery)
}
这就是我将其设置为变量的方式:
readWeight() { weight in
Weight = weight
}
谢谢!
如果我正确理解您的问题,则将变量bodymass
声明为数组results[0]
中的第一个元素,则必须是数组的最后一个元素。检查您的第一个重量值是健康应用中的0
,这很可能是因为正如我所说的那样,bodymass
是results
的第一个元素或您在健康应用中的第一个值。希望这会有所帮助。