在viewModel上获取用户ID。 FreeView将根据是否获得用户ID调度视图。
如果我可以获取用户ID,则在显示EmptyView之后显示ContentView时会遇到问题,我想提出一个解决此问题的想法。
如果在提取后userID为空,则EmptyView 如果不为空,则要显示ContentView。
如果不为空,将显示EmptyView,然后显示ContentView。
这是示例源代码
struct FreeView: View {
@ObservedObject var freeViewViewModel: FreeViewViewModel
var body: some View {
VStack(alignment: .center, spacing: 8) {
if self.freeViewViewModel.userID.isEmpty {
// EmptyView
} else {
// Content View
}
}
}
}
final class FreeViewViewModel: ObservableObject {
@Published var userID: [String] = []
init() {
self.fetchUserID()
}
private func fetchUserID() {
// get userID
}
}
答案 0 :(得分:0)
要更新ContentView
,请执行以下操作
private func fetchUserID() {
// get userID
// ... your fetch request here ...
// ... error response handing here
// in callback of your async fetcher do like the following
guard let fetchedUserId = fetchedUserId else { return }
DispatchQueue.main.async {
self.userID = [fetchedUserId]
}
}
}