Сегодня я получаю шаги от HealthKit, используя приведенный ниже код.
func retrieveStepCount(completion: (stepRetrieved: Double) -> Void) {
let type = HKSampleType.quantityTypeForIdentifier(HKQuantityTypeIdentifierStepCount)
let date = NSDate()
let cal = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!
let newDate = cal.startOfDayForDate(NSDate())
let predicate = HKQuery.predicateForSamplesWithStartDate(newDate, endDate: NSDate(), options: .None) // Our search predicate which will fetch all steps taken today
let interval: NSDateComponents = NSDateComponents()
interval.day = 1
let query = HKStatisticsCollectionQuery(quantityType: type!, quantitySamplePredicate: predicate, options: .CumulativeSum, anchorDate: newDate as NSDate, intervalComponents:interval as NSDateComponents)
query.initialResultsHandler = { query, results, error in
if error != nil {
print("Something went Wrong")
return
}
if let myResults = results{
myResults.enumerateStatisticsFromDate(newDate, toDate: NSDate()) {
statistics, stop in
if let quantity = statistics.sumQuantityForSource(HKSource.defaultSource()) {
let steps = quantity.doubleValueForUnit(HKUnit.countUnit())
print("Steps = \(Int(steps))")
completion(stepRetrieved: steps)
}
}
}
}
executeQuery(query)
}
Теперь скажем, у меня есть эти шаги в общей сложности
Из которого у меня есть несколько шагов, которые были автоматически обнаружены устройством. а некоторые были добавлены другим приложением в heathkit.
Мне нужны оба из них, и я получаю их оба, но проблема возникает, когда пользователь выполняет какие-то действия вручную для набора здоровья.
Я не хочу получать эти добавленные вручную шаги. Итак, в основном я хочу получить (5 793 - 2300) = 3493 шага.
Как я могу это сделать ? Я пытался получить имя HKSource. Я знаю, что когда пользователь вводит шаги вручную, имя источника — «Здоровье», но как мне фильтровать шаги на этой базе? Пожалуйста, расскажите мне об этом, и что мне здесь не хватает? заранее спасибо