Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека Разработчика iOS

Разработчик

Ссылка платформы HealthKit ссылка класса HKAnchoredObjectQuery

Опции
Развертывание Target:

На этой странице
Язык:

HKAnchoredObjectQuery

Наследование


Соответствует


Оператор импорта


Swift

import HealthKit

Objective C

@import HealthKit;

Доступность


Доступный в iOS 8.0 и позже.

Запросы привязанного объекта обеспечивают простой способ искать новые данные в хранилище HealthKit. Запросы привязанного объекта возвращают значение привязки, соответствующее последней выборке, полученной тем запросом. Последующие запросы могут использовать эту привязку для ограничения их результатов только выборками, сохраненными после выборки, соответствующей привязке.

Запросы привязанного объекта являются неизменными: Их свойства установлены, когда они сначала создаются, и они не могут измениться.

Выполнение исходных запросов

Пример кода в Перечислении 1 создает и выполняет запрос привязанного объекта.

Перечисление 1Querying для новых данных

Swift

  • var anchorValue = Int(HKAnchoredObjectQueryNoAnchor)
  • if anchor != nil {
  • anchorValue = anchor!
  • }
  • let sampleType =
  • HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierStepCount)
  • let query = HKAnchoredObjectQuery(type: sampleType,
  • predicate: nil,
  • anchor: anchorValue,
  • limit: Int(HKObjectQueryNoLimit)) {
  • query, results, newAnchor, error in
  • if error != nil {
  • // Perform proper error handling here...
  • println("*** An error occured while setting up the stepCount observer. \(error.localizedDescription) ***")
  • abort()
  • }
  • self.anchor = newAnchor;
  • for result in results {
  • if let sample = result as? HKQuantitySample {
  • self.addStepCountSample(sample)
  • }
  • }
  • }
  • healthStore.executeQuery(query)

Objective C

  • NSUInteger anchor = HKAnchoredObjectQueryNoAnchor;
  • if (self.anchorSet) {
  • anchor = self.anchor;
  • }
  • HKSampleType *sampleType =
  • [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount];
  • HKAnchoredObjectQuery *query =
  • [[HKAnchoredObjectQuery alloc]
  • initWithType:sampleType
  • predicate:nil
  • anchor:anchor
  • limit:HKObjectQueryNoLimit
  • completionHandler:^(HKAnchoredObjectQuery *query,
  • NSArray *results,
  • NSUInteger newAnchor,
  • NSError *error) {
  • if (error) {
  • // Perform proper error handling here...
  • NSLog(@"*** An error occured while performing the anchored object query. %@ ***",
  • error.localizedDescription);
  • abort();
  • }
  • self.anchor = newAnchor;
  • for (HKQuantitySample *sample in results) {
  • [self addStepCountSample:sample];
  • }
  • }];
  • [self.healthStore executeQuery:query];

В первый раз этот код выполнения, это создает запрос привязанного объекта с помощью HKAnchoredObjectQueryNoAnchor значение. Этот запрос возвращает все выборки количества шага, которые в настоящее время находятся в хранилище HealthKit. На последующих выполнениях это использует привязку, возвращенную предыдущим запросом. Эти запросы возвращают только выборки количества шага, сохраненные начиная с предыдущего выполнения.

Выборка запускается путем проверки на допустимое значение привязки. Если это может найти допустимую привязку, это использует ту привязку. Иначе, это использует HKAnchoredObjectQueryNoAnchor значение. Затем, это создает демонстрационный тип количества шага и затем создает запрос. Так как выборка интересуется всеми выборками количества шага, она не использует предикат или предел для фильтрации результатов.

Обработчик обратного вызова запускается путем проверки на ошибки. Если никакая ошибка не происходит, это сохраняет новое значение привязки и затем обрабатывает новые демонстрационные данные.

После того, как блок обработчика завершения определяется, запрос завершен. Пример кода выполняет этот запрос с помощью хранилища HealthKit.

  • Инициализирует новый запрос привязанного объекта.

    Объявление

    Swift

    init!(type type: HKSampleType!, predicate predicate: NSPredicate!, anchor anchor: Int, limit limit: Int, completionHandler handler: ((HKAnchoredObjectQuery!, [AnyObject]!, Int, NSError!) -> Void)!)

    Objective C

    - (instancetype)initWithType:(HKSampleType *)type predicate:(NSPredicate *)predicate anchor:(NSUInteger)anchor limit:(NSUInteger)limit completionHandler:(void (^)(HKAnchoredObjectQuery *query, NSArray *results, NSUInteger newAnchor, NSError *error))handler

    Параметры

    type

    Тип выборки для поиска. Этот запрос поддерживает все демонстрационные типы. В частности можно передать любой конкретный подкласс HKSampleType класс ( HKQuantityType, HKCategoryType, HKWorkoutType, и HKCorrelationType классы).

    predicate

    Предикат, фильтрующий выборки, возвращенные запросом. Передача nil получить все новые выборки указанного типа.

    anchor

    Привязка, возвращенная предыдущим запросом привязанного объекта. Значение привязки соответствует последней выборке, возвращенной предыдущим запросом привязанного объекта. Новый запрос возвращает только объекты, более новые, чем та выборка.

    limit

    Максимальное количество выборок получено запросом. Получить все новые выборки, передачу HKObjectQueryNoLimit.

    handler

    Блок, который вызывают, когда запрос заканчивает выполняться. Этот блок берет следующие параметры:

    query

    Ссылка на запрос, вызывая этот блок.

    results

    Массив, содержащий выборки, возвращенные этим запросом, или nil если произошла ошибка.

    newAnchor

    Значение, соответствующее последней выборке в массиве результатов. Последующие запросы привязки могут использовать это значение для получения только выборок, сохраненных к хранилищу HealthKit, так как завершился этот запрос.

    error

    Если ошибка происходит, этот параметр содержит объект, описывающий ошибку; иначе, это nil.

    Возвращаемое значение

    Недавно инициализированный объект запроса привязки.

    Обсуждение

    После инстанцирования запроса вызовите HKHealthStore класс executeQuery: метод для выполнения его. Запросы работают на анонимной очереди фоновых задач. Как только запрос завершен, обработчик выполняется на той же очереди фоновых задач (но не обязательно том же потоке).

    Оператор импорта

    Objective C

    @import HealthKit;

    Swift

    import HealthKit

    Доступность

    Доступный в iOS 8.0 и позже.

  • Константы, используемые при создании новых запросов привязанного объекта.

    Объявление

    Swift

    var HKAnchoredObjectQueryNoAnchor: Int32 { get }

    Objective C

    #define HKAnchoredObjectQueryNoAnchor (0)

    Константы

    • HKAnchoredObjectQueryNoAnchor

      Используйте эту константу для определения запроса привязанного объекта, возвращающего все соответствующие выборки в настоящее время в хранилище HealthKit.

      Используйте эту константу в первый раз, когда Вы выполняете запрос привязанного объекта. Получающийся запрос в настоящее время возвращает все соответствующие выборки в хранилище HealthKit. Для последующих запросов привязанного объекта используйте привязку, возвращенную предыдущим запросом. Получающийся запрос возвращает только выборки, добавленные к хранилищу HealthKit начиная с предыдущего запроса.

      Доступный в iOS 8.0 и позже.