当前位置: 首页 > 知识库问答 >
问题:

如何从Swift的HealthKit中获取氧饱和度?

司寇阳曦
2023-03-14

我想要2位十进制的血氧饱和度。但我是除以100后得到的。这意味着查询返回hkquantity,但我需要以百分比表示的双值。我无法确切解释。让我们看看我尝试过的代码片段:

public func getOxygenLevel(completion: @escaping (Double?, Error?) -> Void) {

    guard let oxygenQuantityType = HKQuantityType.quantityType(forIdentifier: .oxygenSaturation) else {
        fatalError("*** Unable to get oxygen saturation on this device ***")
    }
    
    HKHealthStore().requestAuthorization(toShare: nil, read: [oxygenQuantityType]) { (success, error) in
        
        guard error == nil, success == true else {
            completion(nil, error)
            return
        }
                
        let predicate = HKQuery.predicateForSamples(withStart: Date.distantPast, end: Date(), options: .strictEndDate)
        let query = HKStatisticsQuery(quantityType: oxygenQuantityType,
                                      quantitySamplePredicate: predicate,
                                      options: .mostRecent) { query, result, error in
            
            DispatchQueue.main.async {
                
                if let err = error {
                    completion(nil, err)
                } else {
                    guard let level = result, let sum = level.mostRecentQuantity() else {
                        completion(nil, error)
                        return
                    }
                    print("Quantity : ", sum)   // It prints 97 % and I need 97 only
                    
                    let measureUnit0 = HKUnit(from: "%")
                    let count0 = sum.doubleValue(for: measureUnit0)
                    print("Count 0 : ", count0)   // It pronts 0.97 and I need 97 only
                    
                    let measureUnit1 = HKUnit.count().unitMultiplied(by: HKUnit.percent())
                    let count1 = sum.doubleValue(for: measureUnit1)
                    print("Count 1 : ", count1)   // It pronts 0.97 and I need 97 only
                    
                    let measureUnit2 = HKUnit.percent()
                    let count2 = sum.doubleValue(for: measureUnit2)
                    print("Count 2 : ", count2)   // It pronts 0.97 and I need 97 only

                    let measureUnit3 = HKUnit.count()
                    let count3 = sum.doubleValue(for: measureUnit3)
                    print("Count 3 : ", count3)   // It pronts 0.97 and I need 97 only

                    completion(count0 * 100.0, nil)
                }
            }
        }
        HKHealthStore().execute(query)
    }
}

共有1个答案

端木野
2023-03-14

文档中说percent度量的值介于0.0和1.0之间-因此需要将其乘以100

 类似资料:
  • 问题内容: 我有一本Swift字典。我想获得钥匙的价值。密钥方法的对象对我不起作用。如何获得字典键的值? 这是我的字典: 问题答案: 使用下标访问字典键的值。这将返回一个可选: 要么 您还可以枚举所有键和值: 或枚举所有值:

  • 问题内容: 我试图从原始值获取枚举类型: 但是似乎对于带空格的字符串不起作用: 任何建议如何获得它? 问题答案: 太复杂了,只需将原始值直接分配给案例 如果案例名称与原始值匹配,您甚至可以忽略它 在Swift 3+中,所有枚举都是

  • 问题内容: 使a饱和的最简单方法是什么? 问题答案: 用途: 更新: 确实有一种更简单的方法。您可以使用该类。该类的优点是它提供了一个静态实用程序方法(即),该方法将返回图像的变灰版本。 话虽如此,我认为使实例饱和的最简单方法是:

  • 问题内容: 我有一个NSURLSession调用dataTaskWithRequest以这种方式发送POST请求 响应等于: 我的问题是我不知道如何获取名称为MYCOOKIEIS的“ Set-Cookie”中的cookie。 我将在用户登录时使用它,因此,如果用户未登录->登录(调用登录api),否则请转到主屏幕并调用其他API。 有人可以帮助我从那里拿走饼干吗? 问题答案: Swift呈现形式可

  • 问题内容: 我想在Swift中获取UIColor的RGB值: 在Java中,我将按以下方式进行操作: 我应该如何获得这个价值? 问题答案: Java 返回一个表示默认sRGB颜色空间中颜色的整数(位24-31是alpha,16-23是红色,8-15是绿色,0-7是蓝色)。 没有这种方法,但是您可以定义自己的方法: 用法: 请注意,只有在“兼容RGB”的色彩空间(例如RGB,HSB或GrayScal

  • 问题内容: 我需要查看由某个URL给出的页面的HTML。如果我有这个,使用Swift获取该URL的HTML源的最有效和同步的方法是什么?我还没有找到一种简单的在线方式来将其返回到变量中,而不是在completionHandler中将其打印出来。 无论使用URL的任何调用,我都需要操纵源。如何在Swift中完成? 问题答案: 免责声明:由于这已经获得了很多意见,我只想提醒大家,这里的答案是同步的,如