Ios 获取周、月和月的用户数据;swift中healthkit的年份格式
在我的应用程序中实现HealthKit时,我需要一些帮助。我正在使用Swift 4 Xcode 9。我使用以下代码获取特定日期的用户步数: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()
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类是的,我试过了,但这给了我一周所有步骤的总和。我想要一周中每一天的个人数据。类似于数组之类的东西。为此,您必须在您的终端跟踪每个日期的数据。否则,您必须多次调用该方法,或者通过更改某一天的日期来循环调用该方法,