【问题标题】:SwiftUI load data from Firebase to TextViewSwiftUI 将数据从 Firebase 加载到 TextView
【发布时间】:2020-02-17 15:31:23
【问题描述】:

我有一个 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()
        }
}

【问题讨论】:

    标签: ios firebase google-cloud-firestore swiftui


    【解决方案1】:

    我的问题的答案称为“SwiftUI 状态变量”。

    我必须创建一个新的 State 变量:
    @State var text = "Just some dummy data, this is not important."

    在 VStack 中:Text(text)

    最后在let text = document.data()["text"] as? String ?? "" 之后我放了self.text = description 的广告

    【讨论】:

    • 您还需要在 `print("text" (text)") 语句之后删除 Text(text)。这是一种有趣的方法,而且绝对可行。但是,我建议您提取您的将数据访问层放到一个单独的类中,以使您的代码更易于维护。
    猜你喜欢
    • 1970-01-01
    • 2018-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-25
    • 2020-07-12
    • 2020-06-22
    相关资源
    最近更新 更多