Как запросить частоту сердечных сокращений в HealthKit, чтобы получить как традиционные образцы HKQuantitySample, так и образцы совокупного количества?

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

       class func getHeartRateSamplesFrom(workout: HKWorkout, handler: @escaping ([HKQuantitySample]?, WorkoutManagerError?) -> 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?) -> 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. Это даст вам все значения, соответствующие вашему предикату, независимо от того, являются ли они частью серии.

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

Другие вопросы по тегам