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 отсчет". Однако у меня гораздо больше шагов, чем это. Я не знаю, почему он не обновляется правильно. Я посмотрел этот пост, а также этот. Однако я не очень хорошо понял ответы. Как мне убедиться, что запрос корректно обновляется? Спасибо за вашу помощь.

1 ответ

Решение

Вы отображаете только количество последнего образца.

Предположим, у вас есть 100 образцов. Вы обновляете свой ярлык 100 раз, используя другое значение количества, и вы видите значение количества последнего обновления.

Чтобы увидеть сумму всех выбранных выборок, вы должны суммировать все количественные значения всех (соответствующих) выборок.

Другие вопросы по тегам