HKSampleQuery будет возвращать только значения за последние 7 дней?

Это приложение 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)
    }

1 ответ

Решение

HealthKit на watchOS предоставляет доступ только к последней неделе данных. Вы можете использовать HKHealthStore Метод earliestPermittedSampleDate для запроса точной даты. Если вам нужно запросить исторические образцы из HealthKit, возраст которых может превышать неделю, вы должны сделать это с вашим приложением для iOS, а затем отправить соответствующую информацию в ваше приложение watchOS с помощью WatchConnectivity.

Другие вопросы по тегам