2017-12-15 5 views
0

私のアプリでHealthKitの実装に少し助けが必要です。速報で健康キットから週、月、年形式のデータを取得する

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) 
    } 

は、今私は、ユーザーが全体の月のそれぞれの日のカウントとカロリーをステップ取得したい:私は、私は、ユーザーが特定の日のために数えるステップを取得するには、次のコードを使用していスウィフト4 Xcodeの9で働いています。言い換えれば、週、月、年の形式で過去のステップカウントを取得したいと考えています。誰も私の助けてもらえますか?

答えて

0

あなただけの日から設定する必要があります(お使いの場合には、それはaWeekAgo、aMothAgo、aYearAgoことができる)とtoDateまでは、[はいCMPedometerクラス

+0

を使用する必要が現在の日付

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 { } } } 

である私はそれを試してみましたが、それは私に1週間のすべてのステップの合計を与えます。私は週全体の各日の個人データを必要とします。配列や何かのようなもの。 – PersianBlue

+0

これはあなたの最後に各日付のデータを追跡する必要があります。 それ以外の場合は、メソッドを複数回呼び出すか、ループ内で個々の日の日付を変更するか、 – Deepak

関連する問題