#ios #swift #applehealth
#iOS #быстрый #applehealth
Вопрос:
Я получил доступ к Apple Health и могу считывать данные о глюкозе, которые есть в симуляторе.
guard let sampleType = HKSampleType.quantityType(forIdentifier: HKQuantityTypeIdentifier.bloodGlucose) else {
fatalError("*** This method should never fail ***")
}
let query = HKSampleQuery(sampleType: sampleType, predicate: nil, limit: Int(HKObjectQueryNoLimit), sortDescriptors: nil) {
query, results, error in
guard let samples = results as? [HKQuantitySample] else {
// Handle any errors here.
return
}
for sample in samples {
print(sample)
}
I дает мне это:
(2020-05-06 19:09:49 0200 — 2020-05-06 19:09:49 0200) 7.8 ммоль <180.1558800000541> / Л 811AACEB-F942-4A48-937B-568AD66E1BDE «Здоровье» (13.3), «iPhone12,3» (13.3) метаданные: {HKWasUserEntered = 1; }
Есть ли какая-либо возможность распечатать только 7,8 ммоль? Я ничего не нашел в документах от Apple. Спасибо за помощь.
Ответ №1:
sample — это класс типа HKQuantitySample. Если вы напечатаете (образец), то будут напечатаны полные данные класса.
Если вы хотите напечатать только количество, попробуйте выполнить печать, как показано ниже
print(sample.quantity)
Комментарии:
1. Это то, на что вы смотрели? если это отвечает на ваш вопрос, вы можете принять ответ.
2. Решена:
sample.startDate
Спасибо! Мне это очень помогло. Есть ли способ получить только источник, например «Здоровье» и дату?
Ответ №2:
Бьюсь об заклад, вам также потребуется извлечь само двойное значение из количества. Вот пример кода
let unit = HKUnit.gramUnit(with: .milli).unitDivided(by: HKUnit.liter())
let value = sample.quantity.doubleValue(for: unit)
Для источника и устройства значения вы можете попробовать это:
let device = sample.device
let sourceRevision = sample.sourceRevision
Если вы хотите, вы можете попробовать мой CocoaPod. Это оболочка над платформой HealthKit для упрощения операций чтения / записи. Вот ссылка:https://cocoapods.org/pods/HealthKitReporter