我正在尝试将“从firebase检索到的数据-Keys”附加到数组中,但是它不起作用
https
答案 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:您的命名约定不正确。您似乎在用大写字母命名变量。变量应为驼峰式。课程应以大写字母开头。