HealthKit在阅读血压时始终返回无结果

时间:2018-01-30 21:23:24

标签: ios swift4 health-kit

我一直在尝试各种方案来取回结果,但没有运气。我从另一个问题中获取了代码并尝试使其工作,但仍然没有。我手动将数据输入健康状态以及从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)
        }
}

1 个答案:

答案 0 :(得分:0)

这是由于未能授权收缩压和舒张压读数。在授权中,当您从Health Kit获取弹出窗口时,即使您选择“全部授权”,“全部”仅暗示显示的列表中显示的内容,而不是HealthKit可用的所有内容。在您的身份验证代码中,您需要指定您希望的每个内容,然后将在auth弹出窗口中显示。

作为旁注。如果您已完成此操作,并且如果您签入了运行状况应用程序,并且看到您想要的内容已获得授权但仍然无效,请尝试切换设置。显然,最初的批准并不总是如此。