gpt4 book ai didi

ios - 将 HealthKit 数据添加到一个值中

转载 作者:行者123 更新时间:2023-11-28 06:50:12 27 4
gpt4 key购买 nike

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

这是我用来查询数据的代码:

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。根据文档:

Statistics queries perform statistical calculations over the set of matching quantity samples

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 的了解并没有太大区别。

查看docs如需进一步阅读,还可以查看 HKStatistics class它提供了更多选项来执行与上一个类似的统计计算。

关于ios - 将 HealthKit 数据添加到一个值中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35115977/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com