Health Kit统计信息查询 - 是否包含来自自己的来源的条目?

时间:2015-02-26 21:13:21

标签: ios health-kit

我发现从HealthKit中要求总和,例如,饮食卡路里将返回一个值,该值会自动减去我自己的应用程序中的条目。这很好,是我想要的行为,但这不会一直发生 - 有时它包括我从我自己的应用程序中创建的条目。这使得无法在不经过每个对象的情况下合理地使用HealthKit统计信息查询结果。

predicate = [HKQuery predicateForSamplesWithStartDate:[date dateByAddingTimeInterval:-queryLatencyPeriod] endDate:nil options:0];

HKStatisticsQuery *sumQuery;

sumQuery = [[HKStatisticsQuery alloc] initWithQuantityType:[HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryEnergyConsumed] quantitySamplePredicate:predicate options:HKStatisticsOptionCumulativeSum completionHandler:^(HKStatisticsQuery *query, HKStatistics *result, NSError *error) {
    float calories = [[result sumQuantity] doubleValueForUnit:[HKUnit calorieUnit]];
}];

有时这包括我的应用程序中的条目总数,有时它不包括。就那么简单。我认为它在HealthKit中出错了。

1 个答案:

答案 0 :(得分:3)

统计查询汇总来自多个来源的样本。当来自两个不同来源的累积类型的样本在时间上重叠时,HealthKit会选择一个来源使用。源的优先级按照样本类型确定,它们在Health应用程序中该样本类型的“共享数据”视图的表的“数据源”部分中列出。

我怀疑当你看到来自你自己的应用程序的样本没有被计算时,实际上是因为来自其他来源的样本与它们重叠。