每次使用 swift 在 HealthKit 中返回数字 0?

Posted

技术标签:

【中文标题】每次使用 swift 在 HealthKit 中返回数字 0?【英文标题】:The number 0 is being returned every time in HealthKit using swift? 【发布时间】:2017-06-28 19:19:44 【问题描述】:

我已成功写入 HealthKit,但收到这些值总是返回 0。我正在尝试返回最新的体重值。

这是我读取重量的函数:

public func readWeight(result: @escaping (Double) -> Void) 
    print("Weight")
    let quantityType = HKQuantityType.quantityType(forIdentifier: HKQuantityTypeIdentifier.bodyMass)

    let weightQuery = HKSampleQuery(sampleType: quantityType!, predicate: nil, limit: 1, sortDescriptors: nil) 

        query, results, error in

        if (error != nil) 
            print(error!)
            result(0.0)
        

        guard let results = results else 
            print("No results of query")
            result(0.0)
            return
        

        if (results.count == 0) 
            print("Zero samples")
            result(0.0)
            return
        

        guard let bodymass = results[0] as? HKQuantitySample else 
            print("Type problem with weight")
            result(0.0)
            return
        
        result(bodymass.quantity.doubleValue(for: HKUnit.pound()))
    

    healthKitStore.execute(weightQuery)

这就是我将它设置为变量的方式:

 readWeight()  weight in
     Weight = weight
 

谢谢!

【问题讨论】:

Get the latest HKSampleQuery datapoint in swift 3?的可能重复 @ninjaproger 那是我的……我这样做是为了让问题更清楚一些,而且问的方式也不同 @arodebaugh 如果您在两个问题中都有相同的问题,那么您应该更新第一个更清楚,而不是打开另一个打开。 @Cristik 让另一个人更清楚地对所有这些混淆感到抱歉,我真的很想继续这个项目,但这个错误让我无法这样做 @arodebaugh 如果您改进了另一个问题,还需要这个吗?如果没有,你可以删除它。 【参考方案1】:

如果我正确理解您的问题,您将变量bodymass 声明为数组results[0] 中的第一个元素,它必须是数组的最后一个元素。检查您的体重的第一个值是否是健康应用程序中的0,这很可能是因为正如我所说,bodymassresults 的第一个元素或您在健康应用程序中的第一个值。希望这会有所帮助。

【讨论】:

以上是关于每次使用 swift 在 HealthKit 中返回数字 0?的主要内容,如果未能解决你的问题,请参考以下文章

Swift HealthKit UpdateQuery 只被调用一次

Swift HealthKit HKStatisticsCollectionQuery statisticsUpdateHandler 并不总是被调用

Swift HealthKit HKStatisticsCollectionQuery statisticsUpdateHandler 并不总是被调用

如何在 swift 中使用 HealthKit 获得步行和跑步距离

如何使用 Swift 在 healthkit 中访问锻炼的元数据

如何使用 Swift 在 iOS 中显示从 HealthKit 中检索到的 HKDocumentSample?