无法将元素附加到数组

时间:2019-03-31 18:48:52

标签: ios swift iphone swift4

我正在尝试从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]()

这是我的Firebase数据: enter image description here

现在,我只是试图访问EventTitle并将其粘贴到表视图中,但是在此之前,我需要将其放入一个数组中,如您所见,它不起作用。

1 个答案:

答案 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)
)} 

考虑使用事件数组而不是字典