HKSourceQuery
Оператор импорта
Swift
import HealthKit
Objective C
@import HealthKit;
Доступность
Доступный в iOS 8.0 и позже.
Исходные запросы позволяют Вам искать источники (приложения и устройства), которые сохранили данные к хранилищу HealthKit. Эти запросы возвращают набор, содержащий все источники для любых выборок, соответствующих запрос.
Исходные запросы являются неизменными: Их свойства установлены, когда они сначала создаются, и они не могут измениться.
Выполнение исходных запросов
Вы создаете исходный запрос путем вызова initWithSampleType:samplePredicate:completionHandler: инициализатор. После того, как запрос инстанцируют, Вы выполняете его путем вызова хранилища HealthKit executeQuery: метод. Это выполняет запрос на анонимной очереди фоновых задач. Когда запрос завершен, он выполняет обработчик результатов на той же очереди фоновых задач (но не обязательно том же потоке).
Пример кода в Перечислении 1 создает исходный запрос и обрабатывает результаты.
Swift
let sampleType =HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierStepCount)let query = HKSourceQuery(sampleType: sampleType, samplePredicate: nil) {query, sources, error inif error != nil {// Perform Proper Error Handling Here...println("*** An error occured while gathering the sources for step date. \(error.localizedDescription) ***")abort()}for object: AnyObject in sources {if let source = object as? HKSource {self.addStepSource(source)}}}healthStore.executeQuery(query)
Objective C
HKSampleType *sampleType =[HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount];HKSourceQuery *query =[[HKSourceQuery alloc]initWithSampleType:sampleTypesamplePredicate:nilcompletionHandler:^(HKSourceQuery *query, NSSet *sources, NSError *error) {if (error) {NSLog(@"*** An error occured while gathering the sources for step date.%@ ***", error.localizedDescription);abort();}for (HKSource *source in sources) {[self addStepSource: source];}}];[self.healthStore executeQuery:query];
Перечисление 1 создает запрос для нахождения всех источников для данных шага. Это запускается путем создания демонстрационного типа для количеств шага. Тогда это создает сам запрос. Запрос хочет собрать все источники для любых выборок данных шага в хранилище HealthKit, таким образом, это передает в a nil предикат. В обработчике обратного вызова, проверки примера кода, чтобы видеть, произошла ли ошибка. Если нет ошибки, код выполняет итерации по набору источников, обрабатывая каждый источник.
После того, как выборка определяет блок обработчика обратного вызова, запрос завершен. Пример кода просто выполняет этот запрос с помощью хранилища HealthKit.
-
init (sampleType:samplePredicate:completionHandler:) - initWithSampleType:samplePredicate:completionHandler:Инстанцирует и возвращает исходный запрос.
Объявление
Swift
init!(sampleTypesampleType: HKSampleType!, samplePredicateobjectPredicate: NSPredicate!, completionHandlercompletionHandler: ((HKSourceQuery!, Set<NSObject>!, NSError!) -> Void)!)Objective C
- (instancetype)initWithSampleType:(HKSampleType *)sampleTypesamplePredicate:(NSPredicate *)objectPredicatecompletionHandler:(void (^)(HKSourceQuery *query, NSSet *sources, NSError *error))completionHandlerПараметры
sampleTypeТип выборки для поиска. Этот запрос поддерживает все демонстрационные типы. В частности можно передать любой конкретный подкласс
HKSampleTypeкласс (HKQuantityType,HKCategoryType,HKWorkoutType, иHKCorrelationTypeклассы).objectPredicateПредикат, ограничивающий выборки, соответствующие запросом. Передача
nilесли Вы хотите получить источники для всех выборок указанного типа.completionHandlerБлок, который вызывают, когда запрос заканчивает выполняться. Этот блок берет следующие параметры:
queryСсылка на запрос, вызывая этот блок.
resultsНабор, содержащий источники для всех выборок, соответствующих и демонстрационный тип и объектный предикат, или
nilесли произошла ошибка.errorЕсли ошибка происходит, этот параметр содержит объект, описывающий ошибку; иначе, это
nil.Возвращаемое значение
Недавно инициализированный демонстрационный объект запроса.
Обсуждение
После инстанцирования запроса вызовите
HKHealthStoreклассexecuteQuery:метод для выполнения этого запроса. Запросы работают на анонимной очереди фоновых задач. Как только запрос завершен, обработчик результатов выполняется на той же очереди фоновых задач (но не обязательно на том же потоке).Оператор импорта
Objective C
@import HealthKit;Swift
import HealthKitДоступность
Доступный в iOS 8.0 и позже.
