Поток 1: Неустранимая ошибка: не обнаружен объект ObservableObject типа UserStore. Объект View.environmentObject (_ :) - PullRequest
1 голос
/ 05 мая 2020

У меня проблема в SwiftUI. Когда я пытаюсь запустить свой симулятор, произошла ошибка. Симулятор запускается хорошо, но через несколько секунд появляется сообщение об ошибке:

Fatal error: No ObservableObject of type UserStore found. A View.environmentObject(_:) for
UserStore may be missing as an ancestor of this view.: file SwiftUI, line 0 2020-05-05
13:08:36.521073+0200 PLAN.YOUR.TRIP[55476:1340155] Fatal error: No ObservableObject of type
UserStore found. A View.environmentObject(_:) for UserStore may be missing as an ancestor
of this view.: file SwiftUI, line 0
(lldb) 

Это происходит из файла, в котором я использую другой файл с именем UserStore для подключения моего проекта к Firebase, вот где ошибка произошло:

 if user.showLogin { //     <--- RIGHT HERE

            ZStack {
                LoginView(showLogin: $showLogin)

                VStack {
                    HStack {

                        Spacer()

                        Image(systemName: "xmark.circle")
                            .resizable()
                            .frame(width: 36, height: 36)
                            .foregroundColor(Color(.systemGray6))
                            .background(Color.gray.opacity(0.5))
                            .clipShape(Circle())
                            .padding()
                            .onTapGesture {
                                self.user.showLogin = false
                        }
                    }
               }
          }

Ошибка говорит о том, что существует проблема «Не найден ObservableObject типа UserStore», но я создал файл с именем «UserStore», в который я поместил это:

import SwiftUI
import Combine

class UserStore: ObservableObject {
    @Published var isLogged = false
    @Published var showLogin = false
    @Published var showReg = false
}

И чтобы связать это с моим другим файлом, в котором я использую @EnvironmentObject, вот так:

struct Home: View {
    @State var showProfile = false
    @EnvironmentObject var user: UserStore
    @State var showLogin = false
    @State var showReg = false

Я не могу понять ошибку, потому что этот точно такой же код работал вчера, но я ' Я пытался удалить расширение под названием «Hero», которое не использовалось в моем проекте, и мне было предложено обновить код до Swift 5, это то, что я сделал, но после этого появилось много других ошибок. Я решил воссоздать проект с той же самой конструкцией и файлами, переустановить какао-стручки с тем же кодом (без «Hero pod»), и идентификатор пакета тот же, так что это не проблема между Firebase и моим проектом .. .

Я знаю, что этот контент здесь повторяется, но я не нашел ничего подходящего для меня на всех других форумах.

Извините за мой английский sh, который не самый лучший ...

Помогите, пожалуйста. Спасибо

1 Ответ

0 голосов
/ 05 мая 2020

Местами все, где вы создаете Home экземпляр, ie. do Home(), вы должны вместо

Home().environmentObject(UserStore())
...