嗨,我正在从Firebase中检索数据,并在检索到数据并将其存储在该闭包之外的变量后,该值返回到其先前的值
我试图创建一个返回字符串数组的函数,以直接更改全局变量。
这是我要在其中存储检索到的数据的变量的声明
var events: [String] = []
override func viewDidLoad() {
super.viewDidLoad()
events = createEventsArray()
tableView.delegate = self
tableView.dataSource = self
}
这是我首先创建的功能
func createEventsArray() -> [String]{
var arrayEventos : [String] = []
var ref = Database.database().reference()
ref.child("eventos").child(uid!).observeSingleEvent(of: .value, with: { (snapshot) in
for child in snapshot.children {
let snap = child as! DataSnapshot
let placeDict = snap.value as! [String: Any]
let info = placeDict["direction"] as! String
arrayEventos.append(info)
print("Event Added")
}//End for
})//End closure
return arrayEventos
}
这是第二次尝试
func createEventsArray() {
var ref = Database.database().reference()
ref.child("eventos").child(uid!).observeSingleEvent(of: .value, with: { (snapshot) in
for child in snapshot.children {
let snap = child as! DataSnapshot
let placeDict = snap.value as! [String: Any]
let info = placeDict["direction"] as! String
self.events.append(info)
print("Hola")
}//End for
})//End closure
}
如您所见,在加载数组之后,必须使用该信息来创建TableView,但是当编译器尝试执行时
tableView.delegate = self
tableView.dataSource = self
出现nil错误