[英]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.