Сегодня я получаю шаги из аптечки, используя приведенный ниже код.
private func updateSteps(completion: @escaping (Double) -> Void) {
print("Authorization complete")
let stepsCount = HKQuantityType.quantityType(forIdentifier: .stepCount)!
let now = Date()
let startOfDay = Calendar.current.startOfDay(for: now)
let predicate = HKQuery.predicateForSamples(withStart: startOfDay, end: now, options: .strictStartDate)
// separateBySource, duration(13), discreteMostRecent(12)
let query = HKStatisticsQuery(quantityType: stepsCount, quantitySamplePredicate: predicate, options: .separateBySource) { (_, result, error) in
var resultCount = 0.0
guard let result = result else {
print("\(String(describing: error?.localizedDescription)) ")
completion(resultCount)
return
}
var dateFormatter: DateFormatter {
let formatter = DateFormatter()
formatter.timeZone = TimeZone.current
formatter.dateFormat = "HH:mm:ss"
return formatter
}
let start = dateFormatter.string(from: result.startDate)//time of first step-10:42AM
let end = dateFormatter.string(from: result.endDate)//time of last step-04:49PM
for source in result.sources! {
print("source \(source) = \(result.sumQuantity(for: source)?.doubleValue(for: HKUnit.count()))")
}
if let sum = result.sumQuantity() {
resultCount = sum.doubleValue(for: HKUnit.count())
}
DispatchQueue.main.async {
completion(resultCount)
}
}
healthStore.execute(query)
}
Теперь я хочу получить время начала (16 января 2020 года в 15:32:51 вечера) и время окончания ( 16 января 2020 года в 15:32:56) конкретного шага c (10 шагов).
Но я получаю только дата начала первого шага (10 шагов) и дата окончания последнего шага (18 шагов)
Как я могу это сделать? Я пытался получить дату от HKSource. Пожалуйста, объясните мне, что мне здесь не хватает? Является ли это возможным? Заранее спасибо.