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 in
if 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:sampleType
samplePredicate:nil
completionHandler:^(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!(sampleType
sampleType
: HKSampleType!, samplePredicateobjectPredicate
: NSPredicate!, completionHandlercompletionHandler
: ((HKSourceQuery!, Set<NSObject>!, NSError!) -> Void)!)Objective C
- (instancetype)initWithSampleType:(HKSampleType *)
sampleType
samplePredicate:(NSPredicate *)objectPredicate
completionHandler:(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 и позже.