【发布时间】:2021-06-03 13:41:01
【问题描述】:
我被困在使用 SwiftUI 应该是微不足道的事情上。我正在从我的 API 中提取一些数据,并且只想使用 ForEach 在我的视图中显示每个项目。
我有以下功能:
@State var workoutVideoList: GetWorkoutVideoListResponse!
func GetWorkoutVideoList() {
loadingWorkoutVideoList = true
PtPodsApiService.GetWorkoutList(firebaseToken: firebaseAuthToken) { (workoutListResult) -> () in
DispatchQueue.main.async() {
workoutVideoList = workoutListResult
loadingWorkoutVideoList = false
}
}
}
然后我想显示另一个视图并将这个对象传递给它:
if workoutVideoList != nil {
BookAppointmentView(workoutVideoList: workoutVideoList)
}
else {
Text("Nope")
}
无论出于何种原因,我的主线程将 workoutVideoList 视为 nil,即使它已被分配。我以为使用调度程序分配它可以解决问题,但没有乐趣!
知道我在这里做错了什么吗?
谢谢
【问题讨论】:
-
你的 @State 变量在 ViewModel 上吗?您的 ViewModel 是
@ObservableObject吗?如果是,您应该将其更改为@Published -
什么时候调用这个函数?视图何时出现?
-
@xTwisteDx 直接在我的视图中,我会在 SwiftUI 中查看视图模型,谢谢
-
给
@State一个默认值@State var workoutVideoList: GetWorkoutVideoListResponse = false并使用onAppear调用GetWorkoutVideoList()但理想情况下,您最终会在 ViewModel 中使用它。 -
我在这里用 SwiftUI 回答了一个 MVVM 问题,请随意看看。这在 Swift 中非常简单。 stackoverflow.com/questions/67538721/…