我终于能够从firebase中提取数据,并且我可以显示它,但由于某种原因,它不会附加到数组,我希望它在这里是我的代码:
override func viewDidLoad() {
super.viewDidLoad()
var arr = [String]()
DataService.instance.recievers.observeSingleEvent(of: .value) {(recipients: FIRDataSnapshot) in
if let recievers = recipients.value as? [String]{
for i in recievers{
print(i)
arr.append(i)
}
}
}
for i in arr{
print(i)
}
}
数据从print(i)语句打印到控制台,但是一旦我离开第一个for循环,它就会清空数组。任何人都可以告诉我为什么,以及如何解决这个问题?
答案 0 :(得分:2)
Firebase代码是异步的。它附加了它,但是当它将它附加到数组时,你的
for i in arr {
print(i)
}
语句已经执行。在从Firebase检索数据后,您应该从observeSingleEvent
内部回调函数来执行某些操作。
override func viewDidLoad() {
super.viewDidLoad()
var arr = [String]()
DataService.instance.recievers.observeSingleEvent(of: .value) {(recipients: FIRDataSnapshot) in
if let recievers = recipients.value as? [String]{
for i in recievers{
print(i)
arr.append(i)
}
displayArray(arr)
}
}
}
func displayArray(name: [String]) {
for i in arr{
print(i)
}
}