SwiftUI загружает данные из Firebase в TextView - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть проект Swift5, но я решил, что будет проще построить только один его экран с SwiftUI.

Проблема в том, что я ничего не знаю о SwiftUI, поэтому мне жаль, если мой вопрос глупый.
На экране есть TextView, и я хотел бы загрузить текстовые данные из firebase.
Моя проблема в том, что я не могу использовать загруженные данные в TextView.

Может ли кто-нибудь помочь мне, как я могу использовать переменную функции в моем VStack (если это вообще возможно)?
Я попытался поместить функцию в VStack, но это дало мне ошибку.

Вот мой код:

 var body: some View {
        List {
            VStack {
                Text("Just some dummy data, this is not important.")
                // i want the "text" variable from loadData() to be in this Text                
            }
        }.onAppear {
            func loadData() {
                guard let userdef = userdefStr(forKey: "didSelect") else { return }

                self.db.collection("news").whereField("title", isEqualTo: userdef)
                    .getDocuments() { (querySnapshot, err) in
                        if let err = err {
                            print("Error getting documents: \(err)")
                        } else {
                            for document in querySnapshot!.documents {

                               let text = document.data()["text"] as? String ?? ""
                                // this variable should be in the VStack's Text
                                print("text: \(text)")
                                Text(text)
                            }
                        }
                }
            }
            // i think this is how i can call the loadData function,maybe i am wrong
            loadData()
        }
}

1 Ответ

1 голос
/ 17 февраля 2020

Ответ на мой вопрос называется «Переменные состояния SwiftUI».

Мне нужно было создать новую переменную State:
@State var text = "Just some dummy data, this is not important."

В VStack: Text(text)

Ad наконец, после let text = document.data()["text"] as? String ?? "" я поставил self.text = description

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...