J'ai essayé d'interroger HealthKit pour le nombre de pas sur mon téléphone. Voici ce que j'ai essayé:HealthKit ne pas retourner les informations mises à jour
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)
En raison de cela, stepsLabel
affiche maintenant « 296 count ». Cependant, j'ai beaucoup plus de pas que cela. Je ne sais pas pourquoi il ne se met pas à jour correctement. J'ai également regardé this post et this one. Cependant, je n'ai pas bien compris les réponses. Comment dois-je m'assurer que la requête est mise à jour correctement? Merci de votre aide.
Notez que l'utilisation d'un HKStatisticsQuery serait beaucoup mieux pour cela. Il va calculer la somme pour vous et gérer les données qui se chevauchent provenant de plusieurs sources. Le code actuel comptera deux fois les étapes de l'utilisateur s'il possède à la fois un iPhone et un Apple Watch, par exemple. – Allan