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 postとthis oneも見ました。しかし、私は答えをよく理解していません。クエリが正しく更新されていることを確認するにはどうすればよいですか?ご協力いただきありがとうございます。
HKStatisticsQueryを使用する方がずっと良いことに注意してください。それはあなたのための合計を計算し、複数のソースから重複データを処理します。例えば、iPhoneとApple Watchの両方を持っている場合、現在のコードはユーザーのステップを2倍にカウントします。 – Allan