Ios 获取周、月和月的用户数据;swift中healthkit的年份格式

Ios 获取周、月和月的用户数据;swift中healthkit的年份格式,ios,swift,healthkit,Ios,Swift,Healthkit,在我的应用程序中实现HealthKit时,我需要一些帮助。我正在使用Swift 4 Xcode 9。我使用以下代码获取特定日期的用户步数: func getTodaysSteps(completion: @escaping (Double) -> Void) { let stepsQuantityType = HKQuantityType.quantityType(forIdentifier: .stepCount)! let now = Date()

在我的应用程序中实现HealthKit时,我需要一些帮助。我正在使用Swift 4 Xcode 9。我使用以下代码获取特定日期的用户步数:

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类

是的,我试过了,但这给了我一周所有步骤的总和。我想要一周中每一天的个人数据。类似于数组之类的东西。为此,您必须在您的终端跟踪每个日期的数据。否则,您必须多次调用该方法,或者通过更改某一天的日期来循环调用该方法,