2016-04-05 24 views
0

私は、電話機のステップ数をHealthKitに問い合わせています。ここで私が試したものです:HealthKitが更新された情報を返さない

let endDate = NSDate() 
    let startDate = NSCalendar.currentCalendar().dateByAddingUnit(.Day, value: -1, toDate: endDate, options: []) 

    let sampleType = HKSampleType.quantityTypeForIdentifier(HKQuantityTypeIdentifierStepCount) 
    let predicate = HKQuery.predicateForSamplesWithStartDate(startDate, endDate: endDate, options: .None) 

    let query = HKSampleQuery(sampleType: sampleType!, predicate: predicate, limit: 0, sortDescriptors: nil, resultsHandler: { (query, results, error) in 
     if results == nil { 
      print("There was an error running the query: \(error)") 
      return 
     } 

     dispatch_async(dispatch_get_main_queue()) { 

      //print(results) 

      dispatch_async(dispatch_get_main_queue()) { 
       let steps = results as! [HKQuantitySample] 
       print(steps.count) 
       for step in steps { 
        self.stepsLabel.text = String(step.quantity) 
       } 
      } 

     } 
    }) 

    self.healthKitStore.executeQuery(query) 

この結果、stepsLabelは現在、「296カウント」表示しています。しかし、私はそれ以上のステップを持っています。私はなぜそれが正しく更新されていないのかわかりません。私はthis postthis oneも見ました。しかし、私は答えをよく理解していません。クエリが正しく更新されていることを確認するにはどうすればよいですか?ご協力いただきありがとうございます。

答えて

1

最後のサンプルの量だけを表示しています。

100個のサンプルがあると仮定します。 ラベルを100回違う量の値で更新しています。見ているのは最後の更新の数量です。

選択したすべてのサンプルの合計を表示するには、すべての(関連する)サンプルのすべての量値を合計する必要があります。

+0

HKStatisticsQueryを使用する方がずっと良いことに注意してください。それはあなたのための合計を計算し、複数のソースから重複データを処理します。例えば、iPhoneとApple Watchの両方を持っている場合、現在のコードはユーザーのステップを2倍にカウントします。 – Allan

関連する問題