【问题标题】:getting names displaying from firebase从firebase获取名称显示
【发布时间】:2020-03-02 09:22:42
【问题描述】:

我正在尝试显示 firebase 数据库的内容。我知道我正在正确阅读它们,因为我能够在读入它们时打印它们。问题是当我调用该方法以在屏幕上显示它们时,它们“超出范围”。

我知道这意味着方法被同时调用,因此数组为空。我尝试了“Sleep()”方法,但不起作用。

 //arrays of names and descriptions
    var Names:[String] = []
    var Desctiptions: [String] = []

初始方法

 override func viewDidLoad() {

        super.viewDidLoad()


        getRestauraunt()


        //create slides
        scrollView.delegate = self
        slides = createSlides()
        setupSlideScrollView(slides: slides)
}
  func getRestauraunt(){

        let db = Firestore.firestore()
        db.collection("Test").getDocuments { (snapshot, err) in
            if let err = err {
                print("Error getting documents: \(err)")
            } else {
                for document in snapshot!.documents {
                    let name = document.get("Name") as! String
                    let description = document.get("Description") as! String

                    //print("Names: ",name," Description: ",description)

                    self.Names.append(name)
                    self.Desctiptions.append(description)

                }
            }
        }


    }

创建幻灯片方法

 func createSlides() -> [Slide] {
        //firebase link
        let slide1:Slide = Bundle.main.loadNibNamed("Slide", owner: self, options: nil)?.first as! Slide
        slide1.labelTitle.text = Names[0]
       }

我希望有人能告诉我如何让“createSlides()”方法等到“getRestauraunts()”方法完成。谢谢

【问题讨论】:

  • 为类型保留大写属性,利用guardif-else 在访问快照之前安全地解包,并与您的编码更加一致(例如:如果您保留viewDidLoad调用实例方法,不要只对一些做,对所有做)。早点养成好习惯!

标签: ios arrays swift firebase google-cloud-firestore


【解决方案1】:

只需从getrestaurant()getDocuments 闭包的末尾调用它

 func getRestauraunt(){

  //as before...

            } else {
                for document in snapshot!.documents {
                    let name = document.get("Name") as! String
                    let description = document.get("Description") as! String
                    self.Names.append(name)
                    self.Desctiptions.append(description)
                }
                self.createSlides()
            }
        }
    }

顺便说一句,创建一个具有名称和描述属性的简单 Document 结构体,并且只有一个数组:[Document]

【讨论】:

  • 这么简单,谢谢!
猜你喜欢
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
  • 2020-08-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多