Как запросить HeartRates в HealthKit, чтобы получить как традиционные образцы HKQuantitySamples, так и совокупные количественные образцы?

#ios #swift #healthkit #hksamplequery #applehealth

Вопрос:

Мой запрос частоты сердечных сокращений ниже использует более старую традиционную HKSampleQuery методику для получения частоты сердечных сокращений, однако, если приложение сохраняет частоту сердечных сокращений в Apple Health как a HKCumulativeQuantitySample , то мой запрос ниже не отражает все частоты сердечных сокращений внутри HKCumulativeQuantitySample . Как я могу запросить, чтобы получить оба типа образцов частоты сердечных сокращений в Apple Health?

 class func getHeartRateSamplesFrom(workout: HKWorkout, handler: @escaping ([HKQuantitySample]?, WorkoutManagerError?) -gt; Void) {    guard let heartRateType:HKQuantityType = HKQuantityType.quantityType(forIdentifier: HKQuantityTypeIdentifier.heartRate) else { return }    //predicate  let startDate = workout.startDate  let endDate = workout.endDate    let predicate = HKQuery.predicateForSamples(withStart: startDate, end: endDate, options: .strictStartDate)    //descriptor  let sortDescriptors = [  NSSortDescriptor(key: HKSampleSortIdentifierEndDate, ascending: false)   ]  let heartRateQuery = HKSampleQuery(sampleType: heartRateType,  predicate: predicate,  limit: (HKObjectQueryNoLimit),  sortDescriptors: sortDescriptors)  { (query:HKSampleQuery, results:[HKSample]?, error:Error?) -gt; Void in    guard error == nil else { print("get heart rate error"); return }    guard let unwrappedResults = results as? [HKQuantitySample] else { print("get heart rate error"); return}  handler(unwrappedResults, nil)      }  HealthStoreSingleton.sharedInstance.healthStore.execute(heartRateQuery)  }  

Ответ №1:

Просто замените ваше использование HKSampleQuery на HKQuantitySeriesSampleQuery . Это даст вам все значения, соответствующие вашему предикату, независимо от того, являются ли они частью ряда.

Это можно использовать для всех типов количеств, поэтому , если вы когда-либо запрашивали отдельные значения an HKQuantityType , вы, как правило, захотите сначала выполнить этот запрос.

Комментарии:

1. Спасибо, но не могли бы вы указать мне какой-либо пример кода для формирования HKQuantitySeriesSampleQuery документации, которая на самом деле не очень полезна или содержит какие-либо примеры, также не удалось найти ничего в Интернете, ища его.