Уровень глюкозы в крови Swift Apple Health
У меня есть доступ к 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)
}
Я даю мне это:
(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)
Бьюсь об заклад, вам также нужно будет извлечь само двойное значение из количества. Вот пример кода
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