gpt4 book ai didi

ios - 如何从 HealthKit 数据中获取最新的 Weight 条目

转载 作者:搜寻专家 更新时间:2023-10-31 19:32:41 25 4
gpt4 key购买 nike

如何从 healthkit 数据中获取最新的体重条目?

我的代码只返回有史以来第一个重量条目。

是否可以在不指定日期范围的情况下仅获取最后记录的条目?

这是我获取第一个条目的代码:

class HealthStore {

private let healthStore = HKHealthStore()
private let bodyMassType = HKSampleType.quantityType(forIdentifier: .bodyMass)!

func authorizeHealthKit(completion: @escaping ((_ success: Bool, _ error: Error?) -> Void)) {

if !HKHealthStore.isHealthDataAvailable() {
return
}

let readDataTypes: Set<HKSampleType> = [bodyMassType]

healthStore.requestAuthorization(toShare: nil, read: readDataTypes) { (success, error) in
completion(success, error)
}

}


//returns the weight entry in Kilos or nil if no data
func bodyMassKg(completion: @escaping ((_ bodyMass: Double?, _ date: Date?) -> Void)) {

let query = HKSampleQuery(sampleType: bodyMassType, predicate: nil, limit: 1, sortDescriptors: nil) { (query, results, error) in
if let result = results?.first as? HKQuantitySample {
let bodyMassKg = result.quantity.doubleValue(for: HKUnit.gramUnit(with: .kilo))
completion(bodyMassKg, result.endDate)
return
}

//no data
completion(nil, nil)
}
healthStore.execute(query)
}

}

从健康包中获取体重条目:

healthstore.authorizeHealthKit { (success, error) in
if success {

//get weight
self.healthstore.bodyMass(completion: { (bodyMass, bodyMassDate) in
if bodyMass != nil {
print("bodyMass: \(bodyMass) date: \(bodyMassDate)")
}
})

}
}

最佳答案

感谢@Allan 的回答,我通过指定 sortDescriptor 返回最后记录的条目:

    let sortDescriptor = NSSortDescriptor(key: HKSampleSortIdentifierStartDate, ascending: false)

let query = HKSampleQuery(sampleType: bodyMassType, predicate: nil, limit: 1, sortDescriptors: [sortDescriptor]) { (query, results, error) in
...
}

关于ios - 如何从 HealthKit 数据中获取最新的 Weight 条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45046974/

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