gpt4 book ai didi

ios - Swift - 从 Apple HealthKit 获取葡萄糖数据

转载 作者:搜寻专家 更新时间:2023-10-31 22:22:42 29 4
gpt4 key购买 nike

我正在做一些关于如何向 Apple HealthKit 应用发送数据以及从中接收数据的教程。

我正在做的部分教程是如何从 healthKitStore 获取高度。

我想做同样的事情,但要检索葡萄糖数据而不是高度,我执行了所有步骤但卡在了这段代码中:

var heightLocalizedString = self.kUnknownString;
self.height = mostRecentHeight as? HKQuantitySample;
// 3. Format the height to display it on the screen
if let meters = self.height?.quantity.doubleValueForUnit(HKUnit.meterUnit()) {
let heightFormatter = NSLengthFormatter()
heightFormatter.forPersonHeightUse = true;
heightLocalizedString = heightFormatter.stringFromMeters(meters);
}

如图所示,从 meterUnit 中为 meters var 分配了一个 double 值,然后创建一个常量格式化程序来格式化 meters var 并将其分配给预先声明的 var (heightLocalizedString)

我的问题是,当我使用这种方法读取葡萄糖时,我遇到了几个问题,第一个问题是我无法弄清楚可用的葡萄糖单位是什么,我唯一得到的是

HKUnitMolarMassBloodGlucose

当我使用它时出现错误说"'NSNumber' is not a subtype of 'HKUnit'",从错误中可以清楚地看出这个参数不是HKUnit 的子类型 类。

另一个问题是,如前面的代码所示,有一个用于高度的格式化程序 (NSLengthFormatter()),但我看不到这样一个用于 Glucose 的格式化程序。

实际上我不确定是否必须完全按照教程来获取葡萄糖数据,而且我也没有看到其他方法。

有什么想法吗?

这是我用来检索葡萄糖数据的代码:

func updateGluco(){

let sampleType = HKSampleType.quantityTypeForIdentifier(HKQuantityTypeIdentifierBloodGlucose)
self.healthManager?.readMostRecentSample(sampleType, completion: {(mostRecentGluco, error) -> Void in

if (error != nil){
println("Error reading blood glucose from HealthKit store: \(error.localizedDescription)")
return;
}

var glucoLocalizedString = self.kUnknownString;
self.gluco = mostRecentGluco as? HKQuantitySample
println("\(self.gluco?.quantity.doubleValueForUnit(HKUnit.moleUnitWithMolarMass(HKUnitMolarMassBloodGlucose)))")
self.gluco?.quantity.doubleValueForUnit(HKUnit.moleUnitWithMolarMass(HKUnitMolarMassBloodGlucose))
if let mmol = self.gluco?.quantity.doubleValueForUnit(HKUnit.moleUnitWithMolarMass(HKUnitMolarMassBloodGlucose)) {
glucoLocalizedString = "\(mmol)"
} else {
println("error reading gluco data!")
}
dispatch_async(dispatch_get_main_queue(), {() -> Void in
self.glucoLabel.text = glucoLocalizedString})
})
}

“mmol”变量返回 nil 值。

我不知道这是否与我的问题有关,但我刚刚看到一篇文章说苹果在 iOS 8.2 中恢复了血糖跟踪,我的应用程序部署目标是 8.1。 (尽管 XCode 已更新到最新版本,但我无法将部署目标升级到最新的 iOS!)

最佳答案

查看标题,血糖需要类型单位(质量/体积),这意味着您需要指定一个复合单位,质量单位除以体积单位:

HK_EXTERN NSString * const HKQuantityTypeIdentifierBloodGlucose NS_AVAILABLE_IOS(8_0);              // Mass/Volume,                 Discrete

通常,人们测量血糖的单位是 mg/dL 和 mmol/L。您可以使用以下方法构造它们:

HKUnit *mgPerdL = [HKUnit unitFromString:@"mg/dL"];

HKUnit *mmolPerL = [[HKUnit moleUnitWithMetricPrefix:HKMetricPrefixMilli molarMass:HKUnitMolarMassBloodGlucose] unitDividedByUnit:[HKUnit literUnit]];

请注意 doubleValueForUnit: 需要一个 HKUnit,而不是一个 NSNumber。查看更多信息

关于ios - Swift - 从 Apple HealthKit 获取葡萄糖数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30213240/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com