我终于能够从 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 循环,它就会清空数组。谁能告诉我为什么,以及如何解决这个问题?
最佳答案
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)
}
}
关于arrays - 元素未从 FireBase 附加到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42228293/