Быстрая загрузка снова при входе в систему - PullRequest
0 голосов
/ 27 мая 2020

У меня что-то вроде этого:

struct Main: View {

    @ObservedObject var data: Data = Data()
    @ObservedObject var profiles: Profiles = Profiles()

    var body: some View {
        TabView{
            Discover().tabItem {
                Image(systemName: "book")
                Text("Discover")
            }
            // more tabs
        }
    }
}

Моя проблема в том, что эти data и profiles привязаны к базе данных и запускаются при запуске приложения. Когда приложение запускается и ни один пользователь не вошел в систему, доступ к данным не будет. Поскольку данные указаны пользователем, c содержимое в базе данных (Firestore).

Теперь при входе в систему данные не отображаются до перезапуска приложения, поскольку vars уже были инициированы с пустым содержимое базы данных. Поскольку контент привязан к пользователю.

Id необходимо повторно инициировать их или «повторно загрузить» их, как только пользователь входит в систему или пользователь вошел в систему. Выполнение этого с помощью onAppear не оптимально, поскольку это приведет к трафик базы данных c up.

Я использую Firestore в качестве базы данных.

1 Ответ

1 голос
/ 27 мая 2020

как насчет чего-то вроде

struct Main: View {

    @ObservedObject var data: Data = Data()
    @ObservedObject var profiles: Profiles = Profiles()

    var body: some View {
        TabView{
            Discover().tabItem {
                Image(systemName: "book")
                Text("Discover")
            }
            // more tabs
        }.onAppear() { 
            if !loggedIn() { <<< func which checks whether user is logged in or data is nil
              loginAndFillData() <<<<< login 
          }
       }
    }
}
...