我一直在尝试查询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。但是,我还没有很好地理解答案。我该如何确保查询正确更新?谢谢你的帮助。
答案 0 :(得分:1)
您只显示最后一个样本的数量。
假设您有100个样本。 您使用不同的数量值更新标签100次,而您看到的是上次更新的数量值。
要查看所有选定样本的总和,您必须总结所有(相关)样本的所有数量值。