(Swift / FireStore)如何将URL放入StringArray

问题描述 投票:0回答:1
 func fetchData(){

        let saveDocument = Firestore.firestore()

       guard let user = Auth.auth().currentUser else{
                      return
                  }

            let uploadDocument = saveDocument.collection("upLoad").document(user.uid) .collection("Posts")

    uploadDocument.getDocuments { (querySnapshot, error) in


            if error != nil {
                print("error")
            } else {
                for document in querySnapshot!.documents {
                    if let foodValue =

        document.data()["FoodImage"] as? String{

     self.foodImageArray.append(foodValue)
            }
print(self.foodImageArray)
                }

↑这次,我可以打印foodImageArray

  var foodImageArray: [String] = []
 override func viewDidLoad() {
        super.viewDidLoad()
        fetchData()
 print(foodImageArray)
    }

↑但是,这次我尝试打印出该项目时,它像[](null)

一样打印出来

我想将我的物品放入foodImageArray并在单元格中显示它们

如何将cloudFirestore拍摄的物品放到foodImageArray?

swift firebase google-cloud-firestore
1个回答
0
投票

您需要在提取完成后打印出来,这需要一些时间并作为后台任务运行。要获得打印时收到的结果,请将fetchData修改为如下形式:

func fetchData(completion: @escaping () -> Void) {

    let saveDocument = Firestore.firestore()

    guard let user = Auth.auth().currentUser else{
        return
    }

    let uploadDocument = saveDocument.collection("upLoad").document(user.uid).collection("Posts")

    uploadDocument.getDocuments { (querySnapshot, error) in

        if error != nil {
            print("error")
        } else {
            for document in querySnapshot!.documents {
                if let foodValue = document.data()["FoodImage"] as? String{
                    self.foodImageArray.append(foodValue)
                }
            }
        }
    }
}

并像这样呼叫fetchData

var foodImageArray: [String] = []
override func viewDidLoad() {
    super.viewDidLoad()
    fetchData {
        print(self.foodImageArray)
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.