Не знаю, как создать один запрос, чтобы получить информацию, требуемую в заголовке.
В настоящее время мой код в псевдо-коде
- for each workout, get the activeEnergyBurned samples via a query and add them to a set (allWorkoutSamplesSet)
- get all samples, via a query, put them in a set (allSamples)
- allSamples.subtract(allWorkoutSamplesSet)
Это означает, что для получения ответа необходимо выполнить несколько запросов (number_of_workouts + 1)
Пример зацикливания на тренировках
for workout in workouts {
let workoutPredicate = HKQuery.predicateForObjects(from: workout)
let compoundPredicate = NSCompoundPredicate(andPredicateWithSubpredicates: [datePredicate, workoutPredicate])
let query = HKSampleQuery(sampleType: quantityType, predicate: compoundPredicate,
limit: 0, sortDescriptors: nil) { (sampleQuery, results, error) -> Void in
if let error = error {
if error._code == self.dbInaccessibleErrCode {
dbLocked = true
} else {
throwError = true
errorMesg = error.localizedDescription
}
} else {
if let workoutSamples = results as? [HKQuantitySample] {
allWorkoutSamplesSet.formUnion(workoutSamples)
}
}
blockFuncDispatchGroup.leave()
}
blockFuncDispatchGroup.enter()
hkHealthStore.execute(query)
}
Мой текущий код работает, но я надеюсь, что есть решение для одного запроса.