Как я могу получить среднесуточные шаги из 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

Лучшее решение

Получить общее количество шагов, предпринятых пользователем. Вы можете указать период времени между двумя датами. Разделите общее количество шагов на сколько дней между двумя датами.

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