问题描述
我正在尝试加载HealthKit数据并在SwiftUI视图(对于Widget)中显示总距离和上次锻炼日期。我在打印语句中获取了数据,但是在下面的HTWidgetView中没有更新数据:
class Widgetviewmodel: ObservableObject {
@Published var workoutDate: Date = Date()
@Published var totaldistance: Double = 0.0
func getWorkoutDataForWidget() {
WorkoutManager.loadWorkouts { (workouts,error) in
dispatchQueue.main.async {
guard let unwrappedWorkouts = workouts else { return }
if let first = unwrappedWorkouts.first {
self.workoutDate = first.startDate
}
let distancesFromWorkouts = unwrappedWorkouts.compactMap {$0.totaldistance?.doubleValue(for: .foot())}
let total = distancesFromWorkouts.sum()
self.totaldistance = total
print("TOtal distance = \(total)")
}
}
}
}
extension Sequence where Element: AdditiveArithmetic {
func sum() -> Element { reduce(.zero,+) }
}
struct HTWidgetView: View {
@Observedobject var viewmodel: Widgetviewmodel
var body: some View {
vstack {
Text("Last Workout = \(viewmodel.workoutDate)")
Text("Total distance")
Text("\(viewmodel.totaldistance)")
}
.onAppear {
viewmodel.getWorkoutDataForWidget()
}
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)