2015-09-17 4 views
1

Мое приложение в основном собирает информацию o от HealthKit, а затем использует математические модели для анализа данных и предоставления нам обратной связи.
Один из многих образцов мы заинтересованы в том, кровяного давления, но HealthKit обрабатывает это как HKCorrelationTypeIdentifierBloodPressure - набор связанных с HKSample, которые в данном случае являются, HKQuantityTypeIdentifierBloodPressureDiastolic и HKQuantityTypeIdentifierBloodPressureSystolic.Запрос корреляций HealthKit, но с использованием привязки

Мы собираем все образцы и для этого я использую HKAnchoredObjectQuery, но это один принимает только один HKSampleType. Pn с другой стороны, если я использую HKCorrelationQuery, я должен указать диапазон дат для этого запроса, который не удовлетворяет моим требованиям ... И вот я, застрял без хорошего решения.


Самое простое решение, возможно, не самый красивый один, чтобы создать dispatch_group и отдельно для диастолического и систолического образцов. Когда я их получу, попробуйте объединить два массива на основе startDate и endDate ... Фу! Из того, что я вижу в Health.app, пользователь может сразу вводить корреляцию, поэтому это должно выполняться на основе дат.

Другая, что мне пришло в голову ... Возможно, можно создать HKAnchoredObjectQuery и передать HKCorrelationType в качестве параметра?

+0

HKCorrelationType является подклассом HKSampleType, поэтому допустимо указать HKCorrelationType как тип HKAnchoredObjectQuery. Вы уже пробовали это? – Allan

+0

Первое, что завтра утром ... Но меня беспокоит то, что 'HKCorrelation' имеет свойство объектов, которое является' Set ', но мне нужен какой-то набор таких образцов, как' (диастолический, систолический) '.. . – cojoj

+1

Изучите свойство sampleType каждого из членов корреляции, чтобы определить, который является систолическим образцом и который является диастолическим. – Allan

ответ

2

Благодаря @Allan для некоторых советов я смог сделать это, используя HKAnchoredObjectQuery. Все потому, что HKCorrelationType является подклассом HKObjectType, поэтому вы можете фактически передать любую корреляцию каждому методу общего назначения в HealthKit, который требует HKObjectType.

Было один дополнительное беспокойство по поводу этого решения - то, что HKAnchoredQuery возвращает [HKSample]?, но мы хотим, чтобы определить систолический и диастолического, но это оказалось решается HealthKit, а также ... В ответе мы получаем [HKCorrelation]? и каждый элемент имеет свойство objects, то есть Set<HKSample>, поэтому нам не нужно беспокоиться о том, чтобы все перемешалось, и мы можем легко отнести результаты к любому методу, принимающему HKSample, просто проверив sampleType.

+0

Привет Cojoj, я также пытаюсь использовать HKAnchoredObjectQuery для запроса типа корреляции кровяного давления, но не получаю никакого ответа. Не могли бы вы помочь мне. Вот код, который я использую: let bloodpressureType = HKQuantityType.correlationTypeForIdentifier (HKCorrelationTypeIdentifierBloodPressure) пусть anchoredQuery = HKAnchoredObjectQuery (тип: bloodpressureType, предикат: предикат, Якорь: hkAnchor, предел: 0, resultsHandler: onAnchorQueryResults) Но я не получаю никакого результата из запроса. – Chandan

Смежные вопросы