将运行状况工具包数据添加到一个值中



我正在使用HealthKit来制作示例查询数据,例如步数。但是,当我在我的设备上测试它时,我得到了一堆不同的结果。现在,由于我获得了来自不同来源和不同日期的结果,例如[16 count, 50 count, .....].现在我想将所有数据加成一个值。我将如何实现这一目标?例如,如果我对HealthKit进行示例查询,并且它返回[15 count, 20 count]我想用 15 + 20 来获得 35 计数。我该怎么做?

以下是我用于查询数据的代码:

func getStepsHealthData() {
    let stepsHealthDataQuery = HKSampleQuery(sampleType: stepsHealth, predicate: predicate, limit: Int(HKObjectQueryNoLimit), sortDescriptors: nil) {
        (query, results, error) in
        let stepsUnit = HKUnit.countUnit()
        for result in (results as? [HKQuantitySample])! {
            stepCount = result.quantity.doubleValueForUnit(stepsUnit)
        }
    }
    healthKitStore?.executeQuery(stepsHealthDataQuery)
}

你绝对可以用HKSampleQuery做你想做的事,你只需要保留一个totalSum变量并迭代每个值。

也就是说,有一种特定的查询类型仅用于您要执行的操作,称为 HKStatisticsQuery 。根据文档:

统计信息查询对一组 匹配数量样本

getTotalSteps函数可以通过以下方式完成:

func getTotalSteps() {
    let stepsType  = HKQuantityType.quantityTypeForIdentifier(HKQuantityTypeIdentifierStepCount)!
    let stepsUnit  = HKUnit.countUnit()
    let sumOption = HKStatisticsOptions.CumulativeSum
    let statisticsSumQuery = HKStatisticsQuery(quantityType: stepsType, quantitySamplePredicate: nil,
        options: sumOption)
        { (query, result, error) in
            if let sumQuantity = result?.sumQuantity() {
                let numberOfSteps = Int(sumQuantity.doubleValueForUnit(stepsUnit))
                print(numberOfSteps)
            }
    }
    healthStore.executeQuery(statisticsSumQuery)
}

HKStatisticsOptions.CumulativeSum可以解决问题,其余代码与您对HKSampleQuery的了解没有太大区别。

查看

文档以供进一步阅读,还可以查看HKStatistics课程,该课程提供了更多选项来执行像上一个一样的统计计算。

相关内容

  • 没有找到相关文章

最新更新