我发现从 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 中的一个错误。