Im trying to display the daily amount of steps the user takes. But is don't really know how to manage this.
I already got this code:
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)
The query gets all the data needed as far as i know. But i don't know how to get the values out of the HKQuantitySample. So I cant test if the correct values are in the HKQuantitySample Array.
In case anyone else is trying to solve this in a not-so-terrible way...
At this time, it doesn't look like using HKStatisticsQuery
or HKStatisticsCollectionQuery
is possible for getting average step count. You can only use HKStatisticsOptionDiscreteAverage
on a discrete data type. If you look at the header for HKTypeIdentifiers
, you will see that HKQuantityTypeIdentifierStepCount
is a cumulative data type.
If you try and fetch the average step count, Xcode spits out: Statistics option HKStatisticsOptionDiscreteAverage is not compatible with cumulative data type HKQuantityTypeIdentifierStepCount
Get the total number of steps a user has taken. You can specify a time period between two dates. Divide the total number of steps by however many days are between your two dates.
You need to loop through steps
not results
and then use each HKQuantitySample
result's quantity
property to get the number of steps in that sample, ex:
var dailyAVG:Double = 0
for steps in results as [HKQuantitySample]
{
// add values to dailyAVG
dailyAVG += steps.quantity.doubleValueForUnit(HKUnit.countUnit())
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.