Добрый день,
Я новичок в Swift 4 и у меня проблемы с получением данных о частоте сердечных сокращений в покое.
Вот что у меня есть:
// Объявления
var heartRateType = HKAnchoredObjectQuery.self
private func createStreamingQuery() -> HKQuery {
let calendar = NSCalendar.current;
let now = NSDate();
let sevenDaysAgo = calendar.date(byAdding: .day, value: -7, to: now as Date);
let startDate = calendar.startOfDay(for: sevenDaysAgo!);
let predicate = HKQuery.predicateForSamples(withStart: startDate as Date, end: now as Date, options: [])
let query = HKAnchoredObjectQuery(type: heartRateType, predicate: predicate, anchor: nil, limit: Int(HKObjectQueryNoLimit)) {
(query, samples, deletedObjects, anchor, error) -> Void in
self.formatSamples(samples: samples)
}
query.updateHandler = { (query, samples, deletedObjects, anchor, error) -> Void in
self.formatSamples(samples: samples)
}
return query
}
@IBAction func readHeartRate(_ sender: Any) {
self.healthKitStore.execute(self.createStreamingQuery())
}
private func formatSamples(samples: [HKSample]?) {
guard let heartRateSamples = samples as? [HKQuantitySample] else { return }
guard let sample = heartRateSamples.first else{return}
let value = sample.quantity.doubleValue(for: heartRateType)
print("HeartRate: \(value)")
}
Я получаю следующие ошибки с этими строками и не могу проверить, будет ли это вообще работать.
// Ошибка: общий параметр 'T' не может быть выведен
// Код с ошибкой:
let query = HKAnchoredObjectQuery(type: heartRateType, predicate: predicate, anchor: nil, limit: Int(HKObjectQueryNoLimit)) {
(query, samples, deletedObjects, anchor, error) -> Void in
self.formatSamples(samples: samples)
}
Другая ошибка: невозможно преобразовать значение типа 'HKAnchoredObjectQuery.Type' в ожидаемый тип аргумента 'HKUnit'
// Код с ошибкой:
let value = sample.quantity.doubleValue(for: heartRateType)
Любая помощь, которую вы можете оказать, очень ценится.
Большое спасибо!
Кевин