簡體   English   中英

如何從HealthKit獲取每日平均步數

[英]How can I get daily average steps form 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數組中是否有正確的值。

萬一其他人試圖以一種不那么可怕的方式解決這個問題......

目前,它看起來不像使用HKStatisticsQueryHKStatisticsCollectionQuery可以獲得平均步數。 您只能在離散數據類型上使用HKStatisticsOptionDiscreteAverage 如果查看HKTypeIdentifiers的標題,您將看到HKQuantityTypeIdentifierStepCount是累積數據類型。

如果您嘗試獲取平均步數,Xcode會吐出:統計選項HKStatisticsOptionDiscreteAverage與累積數據類型HKQuantityTypeIdentifierStepCount不兼容

最佳方案

獲取用戶已執行的步驟總數。 您可以指定兩個日期之間的時間段。 將總步數除以兩天之間的天數。

您需要遍歷steps而不是results ,然后使用每個HKQuantitySample結果的quantity屬性來獲取該樣本中的步驟數,例如:

var dailyAVG:Double = 0
for steps in results as [HKQuantitySample]
{
   // add values to dailyAVG
   dailyAVG += steps.quantity.doubleValueForUnit(HKUnit.countUnit())
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM