Как я могу получить среднесуточные шаги из HealthKit
Я пытаюсь отобразить ежедневное количество шагов, которые делает пользователь. Но я не знаю, как справиться с этим.
Я уже получил этот код:
let endDate = NSDate()
let startDate = NSCalendar.currentCalendar().dateByAddingUnit(.CalendarUnitMonth, value: -1, toDate: endDate, options: nil)
let weightSampleType = HKSampleType.quantityTypeForIdentifier(HKQuantityTypeIdentifierStepCount)
let predicate = HKQuery.predicateForSamplesWithStartDate(startDate, endDate: endDate, options: .None)
let query = HKSampleQuery(sampleType: weightSampleType, predicate: predicate, limit: 0, sortDescriptors: nil, resultsHandler: {
(query, results, error) in
if results == nil {
println("There was an error running the query: \(error)")
}
dispatch_async(dispatch_get_main_queue()) {
var dailyAVG = Int()
var steps = results as [HKQuantitySample]
for var i = 0; i < results.count; i++
{
//results[i] add values to dailyAVG
}
}
})
self.healthKitStore.executeQuery(query)
Запрос получает все необходимые данные, насколько я знаю. Но я не знаю, как получить значения из HKQuantitySample. Поэтому я не могу проверить правильность значений в массиве HKQuantitySample.
2 ответа
Вам нужно перебрать steps
не results
а затем использовать каждый HKQuantitySample
Результаты quantity
свойство, чтобы получить количество шагов в этом образце, например:
var dailyAVG:Double = 0
for steps in results as [HKQuantitySample]
{
// add values to dailyAVG
dailyAVG += steps.quantity.doubleValueForUnit(HKUnit.countUnit())
}
На случай, если кто-то еще попытается решить эту проблему не так ужасно...
В настоящее время это не похоже на использование HKStatisticsQuery
или же HKStatisticsCollectionQuery
возможно для получения среднего количества шагов. Вы можете использовать только HKStatisticsOptionDiscreteAverage
на дискретный тип данных. Если вы посмотрите на заголовок для HKTypeIdentifiers
, вы увидите, что HKQuantityTypeIdentifierStepCount
это накопительный тип данных.
Если вы попытаетесь получить среднее число шагов, Xcode выплевывает: опция статистики HKStatisticsOptionDiscreteAverage не совместима с накопительным типом данных HKQuantityTypeIdentifierStepCount
Лучшее решение
Получить общее количество шагов, предпринятых пользователем. Вы можете указать период времени между двумя датами. Разделите общее количество шагов на сколько дней между двумя датами.