HKSampleQuery只会返回过去7天的值?

问题描述 投票:0回答:1

这是一个WatchOS应用程序。通过测试,看起来好像这段代码只会返回我手动添加到健康应用程序不到1周的任何体重值。这是有意的吗?各种方式?

func getUserBodyMass(completion: @escaping (HKQuantitySample) -> Void) {

            guard let weightSampleType = HKSampleType.quantityType(forIdentifier: .bodyMass) else {
                print("Body Mass Sample Type is no longer available in HealthKit")
                return
            }

            //1. Use HKQuery to load the most recent samples.
            let mostRecentPredicate = HKQuery.predicateForSamples(withStart: Date.distantPast,
                                                                  end: Date(),
                                                                  options: [])
            let sortDescriptor = NSSortDescriptor(key: HKSampleSortIdentifierStartDate,
                                                  ascending: false)
            let limit = 1
            let sampleQuery = HKSampleQuery(sampleType: weightSampleType,
                                            predicate: mostRecentPredicate,
                                            limit: limit,
                                            sortDescriptors: [sortDescriptor]) { (query, samples, error) in


                                                //2. Always dispatch to the main thread when complete.
                                                DispatchQueue.main.async {
                                                    guard let samples = samples,
                                                        let mostRecentSample = samples.first as? HKQuantitySample else {
                                                            print("getUserBodyMass sample is missing")
                                                            return
                                                    }
                                                    completion(mostRecentSample)
                                                }
            }
            healthStore.execute(sampleQuery)
    }
ios swift apple-watch health-kit watch-os-4
1个回答
2
投票

watchOS上的HealthKit仅提供对上周数据的访问。您可以使用HKHealthStore方法earliestPermittedSampleDate查询确切的日期。如果您需要查询HealthKit中可能超过一周的历史样本,您应该使用随附的iOS应用程序,然后使用WatchConnectivity将相关信息发送到watchOS应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.