我正在尝试从Firebase中获取数据,将其推入数组,然后将其放在表视图中。问题是当我打印阵列时,控制台显示该阵列内部没有任何东西。
let ref = Database.database().reference()
ref.child("Events").observe(.value, with: {(data) in
let events = data.value as! NSDictionary
for event in events {
let dict = event.value as? [String : Any]
print(dict?["EventTitle"])
self.eventsArray.append(dict?["EventTitle"] as! String)
}
)}
print(eventsArray)
此代码在我的UITableViewController类的viewDidLoad
中。数组在viewDidLoad方法上方定义为var eventsArray = [String]()
现在,我只是试图访问EventTitle并将其粘贴到表视图中,但是在此之前,我需要将其放入一个数组中,如您所见,它不起作用。
答案 0 :(得分:2)
observe
异步工作。将print
行放在完成块中。
并使用适当的字典枚举API和Swift本机类型
let ref = Database.database().reference()
ref.child("Events").observe(.value, with: {(data) in
let events = data.value as! [String:[String:String]]
for (_, value) in events {
print(value["EventTitle"])
self.eventsArray.append(value["EventTitle"]!)
}
print(eventsArray)
)}
考虑使用事件数组而不是字典