У меня возникли проблемы с данными диаграммы при чтении данных из HealthKit. Я использую длительный запрос с обработчиком обновлений для добавления новых данных/значений в фоновом режиме. Однако данные моего графика, похоже, перерисовываются всякий раз, когда я закрываю и открываю приложение, из-за чего линия сходит с ума. Мой список ниже также получает дополнительные повторяющиеся значения. Я попытался решить эту проблему, остановив запрос с помощью модификатора .onDisappear, но .onDisappear не обновил значения, пока я принудительно не закрыл приложение и не открыл его снова.
У меня возникли проблемы с данными диаграммы при чтении данных из HealthKit. Я использую длительный запрос с обработчиком обновлений для добавления новых данных/значений в фоновом режиме. Однако данные моего графика, похоже, перерисовываются всякий раз, когда я закрываю и открываю приложение, из-за чего линия сходит с ума. Мой список ниже также получает дополнительные повторяющиеся значения. Я попытался решить эту проблему, остановив запрос с помощью модификатора .onDisappear, но .onDisappear не обновил значения, пока я принудительно не закрыл приложение и не открыл его снова. [code]//Properties within my view model for resting HR. var restingHRquery: HKStatisticsCollectionQuery? @Published var restingHR: [RestingHeartRate] = [RestingHeartRate]()
func calculateRestingHRData() {
let restingHRpredicate = HKQuery.predicateForSamples(withStart: oneWeekAgo, end: nil, options: .strictStartDate)
restingHRquery!.initialResultsHandler = { restingQuery, statisticsCollection, error in
//Handle errors here if let error = error as? HKError { switch (error.code) { case .errorHealthDataUnavailable: return case .errorNoData: return default: return } }
guard let statisticsCollection = statisticsCollection else { return}
//Calculating resting HR statisticsCollection.enumerateStatistics(from: self.startDate, to: self.date) { statistics, stop in if let restHRquantity = statistics.averageQuantity() { let hrdate = statistics.startDate
//HR Units let hrUnit = HKUnit(from: "count/min") let restHRvalue = restHRquantity.doubleValue(for: hrUnit) let restHR = RestingHeartRate(restingValue: Int(restHRvalue), date: hrdate)
restingHRquery!.statisticsUpdateHandler = { restingQuery, statistics, statisticsCollection, error in
//Handle errors here if let error = error as? HKError { switch (error.code) { case .errorHealthDataUnavailable: return case .errorNoData: return default: return } }
guard let statisticsCollection = statisticsCollection else { return}
//Calculating resting HR statisticsCollection.enumerateStatistics(from: self.startDate, to: self.date) { statistics, stop in if let restHRquantity = statistics.averageQuantity() { let hrdate = statistics.startDate
//HR Units let hrUnit = HKUnit(from: "count/min") let restHRvalue = restHRquantity.doubleValue(for: hrUnit) let restHR = RestingHeartRate(restingValue: Int(restHRvalue), date: hrdate)
List{ ForEach(healthStoreVM.restingHR.reversed(), id: \.date) { restHR in
DataListView(imageText: "heart.fill", imageColor: .red, valueText: "\(restHR.restingValue) bpm", date: restHR.date) } } .listStyle(.inset) } } [/code] Может ли это быть просто проблема с диаграммой SwiftUI? [img]https://i. sstatic.net/Z5qXW.png[/img]