检索到的数据没有追加到我的数组swift4中

时间:2019-03-02 09:35:45

标签: ios arrays swift firebase-realtime-database

我正在尝试将“从firebase检索到的数据-Keys”附加到数组中,但是它不起作用

这是for循环输出#2检索到的键

这是Firebase的键

这是代码

https

1 个答案:

答案 0 :(得分:1)

您遇到的问题是Firebase Observe函数以(快照)形式提供回调。

上网花费一些时间来获取数据,因此,firebase异步返回数据。因此,您的for循环中的代码将在返回Firebase数据之前运行。在for循环代码运行时,数组仍然为空。但是,如您在我的示例代码中看到的,for循环代码在一个单独的函数中,并在Firebase观察调用中的for循环之后立即调用它。

尝试以下方法:

override func viewDidLoad() {
    getFirebaseData()
}
func getFirebaseData() {
    let ref = Database.database().reference()
    ref.child("Faculty ").observe(.value, with: { (snapshot) in
        if let result = snapshot.children.allObjects as? [DataSnapshot] {
            for child in result {
                let FacultyName = child.key as! String
                print(FacultyName)
                self.NamesofFac.append(FacultyName)

            }
            printNames()
        }
    })
}



func printNames() {
    for i in 0...self.NamesofFac.count {
        print(self.NamesofFac.count)
        print(" line")
        print(self.NamesofFac)
    }
}

这是在从Firebase完全加载名称之前,它不会打印名称。

PS:您的命名约定不正确。您似乎在用大写字母命名变量。变量应为驼峰式。课程应以大写字母开头。