Я пытаюсь получить heartRate за прошедший месяц от HealthKit, однако я получаю пустые результаты.
Я прочитал, что это можно получить из яблочных часов, однако у меня сложилось впечатление, чтоего можно извлечь из приложения Health.
Чего мне не хватает?
func getThisMonthsHeartRates() {
print("func called")
let heartRateUnit:HKUnit = HKUnit(from: "count/min")
let heartRateType:HKQuantityType = HKQuantityType.quantityType(forIdentifier: .heartRate)!
//predicate
let monthsToAdd = -1
let startDate = getCurrentDate()
var dateComponent = DateComponents()
dateComponent.year = monthsToAdd
let endDate = Calendar.current.date(byAdding: dateComponent, to: startDate)
let predicate = HKQuery.predicateForSamples(withStart: endDate, end: startDate, options: [])
print(startDate)
print(endDate!)
//descriptor
let sortDescriptors = [
NSSortDescriptor(key: HKSampleSortIdentifierEndDate, ascending: false)
]
let heartRateQuery = HKSampleQuery(sampleType: heartRateType,
predicate: predicate,
limit: Int(HKObjectQueryNoLimit),
sortDescriptors: sortDescriptors)
{ (query:HKSampleQuery, results:[HKSample]?, error:Error?) -> Void in
guard error == nil else { print("error"); return }
print("results")
print(results!)
for result in results! {
guard let currData:HKQuantitySample = result as? HKQuantitySample else { return }
... do work
}
} //eo-query
healthStore.execute(heartRateQuery)
}//eom