Как проверить, установлен ли @EnvironmentObject? (SwiftUI) - PullRequest
0 голосов
/ 05 апреля 2020

Что у меня есть: View и ViewModel (как расширение структуры View).
Оба они используют @EnvironmentObject типа AppState.
Проблема в том, что мой предварительный просмотр падает из-за этой ошибки:
Fatal error: No ObservableObject of type AppState found.
Комментирование строк в loadUser fun c спасает от cra sh.

struct ProfileView: View {
    @EnvironmentObject var appState: AppState
    @ObservedObject var viewModel = ViewModel()
    ...
}
extension ProfileView {
    class ViewModel: ObservableObject {
        @EnvironmentObject var appState: AppState
        @Published var userVM = UserVM(.example)

        init() {
            loadUser()
        }

        func loadUser() {
            User.WebService.getSelf { user, errorMsg in
                DispatchQueue.main.async {
                    guard let user = user else {
                        /*self.appState.showingAlert = true
                        self.appState.alert = Alert(
                            title: Text("An error occured!"),
                            message: Text(errorMsg ?? "unknown error"))*/
                        return
                    }
                    self.userVM = UserVM(user)
                }
            }
        }
    }
}
struct ProfileView_Previews: PreviewProvider {
    static let viewModel = ProfileView.ViewModel()
    static var previews: some View {
        let appState = AppState()
        appState.activeScreen = .profile
        return ProfileView()
            .environmentObject(appState)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...