簡體   English   中英

快速從Healthkit中獲取周,月和年格式的用戶數據

[英]Getting users data in week, month & year format from healthkit in swift

我需要在我的應用程序中實施HealthKit的幫助。 我正在使用Swift 4 Xcode9。我正在使用以下代碼來獲取特定日期的用戶步數:

func getTodaysSteps(completion: @escaping (Double) -> Void) {
        let stepsQuantityType = HKQuantityType.quantityType(forIdentifier: .stepCount)!

        let now = Date()
        let startOfDay = Calendar.current.startOfDay(for: now)
        let predicate = HKQuery.predicateForSamples(withStart: startOfDay, end: now, options: .strictStartDate)

        let query = HKStatisticsQuery(quantityType: stepsQuantityType, quantitySamplePredicate: predicate, options: .cumulativeSum) { (_, result, error) in
            var resultCount = 0.0

            guard let result = result else {
       //         log.error("Failed to fetch steps = \(error?.localizedDescription ?? "N/A")")
                completion(resultCount)
                return
            }

            if let sum = result.sumQuantity() {
                resultCount = sum.doubleValue(for: HKUnit.count())
            }

            DispatchQueue.main.async {
                completion(resultCount)
            }
        }

        healthStore.execute(query)
    }

現在,我想獲取用戶整個月中每一天的步數和卡路里。 換句話說,我想讓用戶以周,月和年格式超過步數。 有人可以幫我嗎?

您只需要設置日期(在您的情況下,它可以是aWeekAgo,aMothAgo,aYearAgo),而toDate是當前日期

let sevneDaysAgo = NSCalendar.current.date(byAdding: .day, value: -7, to: Date())

    let currentDate = Date.init()

    PedometerManager.shared.getPedometerDataFromDate(fromDate: sevneDaysAgo, toDate: currentDate) { [weak self] (data, error, errorMsg)  in            
            if(error == nil && data != nil) {

            if let count =  data?.numberOfSteps {

            }

            if let distance = data?.distance {

                let roundDis = round(distance.doubleValue)
                let dis = String.init(format: "%.3f",roundDis)
            }


            if let pace = data?.currentPace {

            }

            if let cadence  = data?.currentCadence {

            }

            if let ascend = data!.floorsAscended {

            }

            if let desc = data!.floorsDescended {

            }

            if let activity = self?.activityName {

            }


        }
    }

您必須使用CMPedometer類

暫無
暫無

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

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