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

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

Разработчик

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

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

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

HKStatisticsQuery

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


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


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


Swift

import HealthKit

Objective C

@import HealthKit;

Доступность


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

Запросы статистики выполняют статистические вычисления по набору соответствия выборок количества. Запросы статистики могут вычислить минимум, максимум и среднее значение для дискретных количеств. Они могут также вычислить сумму для кумулятивных количеств. Для получения дополнительной информации о доступных типах количества и учиться, являются ли они дискретными или кумулятивными значениями, посмотрите константы идентификатора типа в Ссылке Констант HealthKit.

Можно использовать запросы статистики с выборками количества только. Если Вы хотите вычислить статистику по проверкам или выборкам корреляции, необходимо выполнить надлежащий запрос и обработать данные сами.

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

Выполнение запросов статистики

Вы создаете демонстрационный запрос путем вызова initWithQuantityType:quantitySamplePredicate:options:completionHandler: инициализатор. После того, как запрос инстанцируют, Вы выполняете его путем вызова хранилища HealthKit executeQuery: метод. Этот метод выполняет запрос на анонимной очереди фоновых задач. Когда запрос завершен, он выполняет обработчик результатов на той же очереди фоновых задач (но не обязательно на том же потоке). Как правило, Вы диспетчеризируете эти результаты назад основной очереди для обновления пользовательского интерфейса.

Пример кода в Перечислении 1 создает запрос статистики и обрабатывает результаты. Эта функция взята от AAPLEnergyViewController.m файл в Адаптации: Сохраните и Получите Данные HealthKit.

Общие джоули перечисления 1Fetching

Swift

  • func fetchTotalJoulesConsumedWithCompletionHandler(
  • completionHandler:(Double?, NSError?)->()) {
  • let calendar = NSCalendar.currentCalendar()
  • let now = NSDate()
  • let components = calendar.components(.YearCalendarUnit |
  • .MonthCalendarUnit | .DayCalendarUnit, fromDate: now)
  • let startDate = calendar.dateFromComponents(components)
  • let endDate = calendar.dateByAddingUnit(.DayCalendarUnit,
  • value: 1, toDate: startDate, options: NSCalendarOptions(nil))
  • let sampleType = HKQuantityType.quantityTypeForIdentifier(
  • HKQuantityTypeIdentifierDietaryEnergyConsumed)
  • let predicate = HKQuery.predicateForSamplesWithStartDate(startDate,
  • endDate: endDate, options: .StrictStartDate)
  • let query = HKStatisticsQuery(quantityType: sampleType,
  • quantitySamplePredicate: predicate,
  • options: .CumulativeSum) { query, result, error in
  • if result != nil {
  • completionHandler(nil, error)
  • return
  • }
  • var totalCalories = 0.0
  • if let quantity = result.sumQuantity() {
  • let unit = HKUnit.jouleUnit()
  • totalCalories = quantity.doubleValueForUnit(unit)
  • }
  • completionHandler(totalCalories, error)
  • }
  • healthStore.executeQuery(query)
  • }

Objective C

  • - (void)fetchTotalJoulesConsumedWithCompletionHandler:(void (^)(double, NSError *))completionHandler {
  • NSCalendar *calendar = [NSCalendar currentCalendar];
  • NSDate *now = [NSDate date];
  • NSDateComponents *components = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:now];
  • NSDate *startDate = [calendar dateFromComponents:components];
  • NSDate *endDate = [calendar dateByAddingUnit:NSCalendarUnitDay value:1 toDate:startDate options:0];
  • HKQuantityType *sampleType = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryEnergyConsumed];
  • NSPredicate *predicate = [HKQuery predicateForSamplesWithStartDate:startDate endDate:endDate options:HKQueryOptionStrictStartDate];
  • HKStatisticsQuery *query = [[HKStatisticsQuery alloc] initWithQuantityType:sampleType quantitySamplePredicate:predicate options:HKStatisticsOptionCumulativeSum completionHandler:^(HKStatisticsQuery *query, HKStatistics *result, NSError *error) {
  • if (!result) {
  • if (completionHandler) {
  • completionHandler(0.0f, error);
  • }
  • return;
  • }
  • double totalCalories = [result.sumQuantity doubleValueForUnit:[HKUnit jouleUnit]];
  • if (completionHandler) {
  • completionHandler(totalCalories, error);
  • }
  • }];
  • [self.healthStore executeQuery:query];
  • }

Пример кода в Перечислении 1 определяет метод, вычисляющий полную энергию, расходуемую сегодня. Этот метод запускается путем вычисления запуска и даты окончания желаемого временного интервала. Этот метод производит 24-часовой период, запускающийся в предыдущую полночь. Затем, это определяет демонстрационный тип для диетической расходуемой энергии и предикат, отфильтровывающий любые выборки, не находящиеся в пределах желаемого временного интервала.

С демонстрационным типом и создаваемым предикатом, это создает запрос статистики. Этот запрос подводит итог общей суммы диетической энергии, расходуемой во время кадра требуемого времени. Как только вычисления сделаны, запрос вызывает свой обработчик результатов.

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

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

  • Инициализирует экземпляр запроса статистики, выполняющий указанные вычисления по соответствующим выборкам в хранилище HeathKit.

    Объявление

    Swift

    init!(quantityType quantityType: HKQuantityType!, quantitySamplePredicate quantitySamplePredicate: NSPredicate!, options options: HKStatisticsOptions, completionHandler handler: ((HKStatisticsQuery!, HKStatistics!, NSError!) -> Void)!)

    Objective C

    - (instancetype)initWithQuantityType:(HKQuantityType *)quantityType quantitySamplePredicate:(NSPredicate *)quantitySamplePredicate options:(HKStatisticsOptions)options completionHandler:(void (^)(HKStatisticsQuery *query, HKStatistics *result, NSError *error))handler

    Параметры

    quantityType

    Тип выборки для поиска. Этот тип должен быть экземпляром HKQuantityType класс. Вы не можете выполнить запросы статистики с помощью других демонстрационных типов.

    quantitySamplePredicate

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

    options

    Список опций, определяющих тип статистических выполняемых вычислений и путь, которым объединяются данные из многократных источников. Для списка допустимых опций посмотрите HKStatisticsOptions.

    handler

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

    query

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

    results

    Объект статистики HealthKit, содержащий запрошенные статистические данные, или nil если происходит ошибка.

    error

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

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

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

    Обсуждение

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

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

    Objective C

    @import HealthKit;

    Swift

    import HealthKit

    Доступность

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