Ограничьте результаты 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
Результаты.