Ограничьте результаты HKSampleQuery теми, которые вводятся из вашего собственного приложения

Я хочу ограничить результаты, возвращаемые HealthKit HKSampleQuery, теми, которые были введены через мое собственное приложение. Есть ли способ указать результаты только с помощью моего идентификатора пакета приложения и тем самым исключить любые другие источники данных, возвращаемые из других приложений?

Есть ли способ указать это с NSSortDescriptor или же NSPredicateкак я попробовал ниже?

func querySteps() {
    // let sort = NSSortDescriptor(key: "bundleIdentifier", ascending: true, selector: "com.companyName.appName:")
    // let resultPredicate = NSPredicate(format: "bundleIdentifier", "com.companyName.appName")

    let sampleQuery = HKSampleQuery(sampleType: healthKitManager.stepsCount!,
        predicate: nil,
        limit: 100,
        sortDescriptors: nil)
        { [unowned self] (query, results, error) in
            if let results = results as? [HKQuantitySample] {
                self.steps = results
                dispatch_async(dispatch_get_main_queue(), { () -> Void in
                    self.tableView.reloadData()
                });

            }
    }

    healthStore?.executeQuery(sampleQuery)
}

1 ответ

Простое однострочное решение вопроса выше. использование HKQuery создать объект предиката, который определяет источник данных:

let thePredicate = HKQuery.predicateForObjectsFromSource(HKSource.defaultSource())

А потом поменять nil значение параметра предиката с thePredicate, в этом случае. Затем результаты в вашем табличном представлении будут отображать только ваши собственные приложения. HKQuery Результаты.

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