HealthKit 总是 Returns 读取血压时没有结果
HealthKit Always Returns No Results when reading Blood Pressure
我一直在尝试各种方法来恢复结果,但没有成功。我从另一个问题中获取了代码并试图让它工作,但仍然没有。我手动将数据输入健康以及从 BP 监视器读取数据,所以我知道那里有数据。没有错误报告。
func readSampleByBloodPressure()
{
let past = Date.distantPast
let now = Date()
let sortDescriptor = NSSortDescriptor(key:HKSampleSortIdentifierStartDate, ascending: true)
let type = HKQuantityType.correlationType(forIdentifier: HKCorrelationTypeIdentifier.bloodPressure)
let sampleQuery = HKSampleQuery(sampleType: type!, predicate: nil, limit: 0, sortDescriptors: [sortDescriptor])
{ (sampleQuery, results, error ) -> Void in
let dataLst = results as? [HKCorrelation];
for data in dataLst!
{
let data1 = (data.objects(for: HKObjectType.quantityType(forIdentifier: HKQuantityTypeIdentifier.bloodPressureSystolic)!)).first as? HKQuantitySample
let data2 = data.objects(for: HKObjectType.quantityType(forIdentifier: HKQuantityTypeIdentifier.bloodPressureDiastolic)!).first as? HKQuantitySample
print("Data Found")
/*
if let value1 = data1!.quantity.doubleValue(for: HKUnit.millimeterOfMercury()) , let value2 = data2!.quantity.doubleValue(for: HKUnit.millimeterOfMercury())
{
print(value1)
print(value2)
}
*/
}
}
self.healthStore?.execute(sampleQuery)
}
}
这是由于未能同时授权收缩压和舒张压读数造成的。在授权中,当您从 Health Kit 获得弹出窗口时,即使您 select Authorize All,All 仅表示显示在列表中的内容,而不是 HealthKit 可用的所有内容。在您的授权代码中,您需要指定您想要的每件事,然后将显示在授权弹出窗口中。
作为旁注。如果您已完成此操作,并且如果您检查健康应用程序并看到您想要的内容已获得授权但它仍然无法正常工作,请尝试切换设置。显然,最初的批准并不总是需要。
我一直在尝试各种方法来恢复结果,但没有成功。我从另一个问题中获取了代码并试图让它工作,但仍然没有。我手动将数据输入健康以及从 BP 监视器读取数据,所以我知道那里有数据。没有错误报告。
func readSampleByBloodPressure()
{
let past = Date.distantPast
let now = Date()
let sortDescriptor = NSSortDescriptor(key:HKSampleSortIdentifierStartDate, ascending: true)
let type = HKQuantityType.correlationType(forIdentifier: HKCorrelationTypeIdentifier.bloodPressure)
let sampleQuery = HKSampleQuery(sampleType: type!, predicate: nil, limit: 0, sortDescriptors: [sortDescriptor])
{ (sampleQuery, results, error ) -> Void in
let dataLst = results as? [HKCorrelation];
for data in dataLst!
{
let data1 = (data.objects(for: HKObjectType.quantityType(forIdentifier: HKQuantityTypeIdentifier.bloodPressureSystolic)!)).first as? HKQuantitySample
let data2 = data.objects(for: HKObjectType.quantityType(forIdentifier: HKQuantityTypeIdentifier.bloodPressureDiastolic)!).first as? HKQuantitySample
print("Data Found")
/*
if let value1 = data1!.quantity.doubleValue(for: HKUnit.millimeterOfMercury()) , let value2 = data2!.quantity.doubleValue(for: HKUnit.millimeterOfMercury())
{
print(value1)
print(value2)
}
*/
}
}
self.healthStore?.execute(sampleQuery)
}
}
这是由于未能同时授权收缩压和舒张压读数造成的。在授权中,当您从 Health Kit 获得弹出窗口时,即使您 select Authorize All,All 仅表示显示在列表中的内容,而不是 HealthKit 可用的所有内容。在您的授权代码中,您需要指定您想要的每件事,然后将显示在授权弹出窗口中。
作为旁注。如果您已完成此操作,并且如果您检查健康应用程序并看到您想要的内容已获得授权但它仍然无法正常工作,请尝试切换设置。显然,最初的批准并不总是需要。