检索Dictionnary值并将它们附加到数组Swift中

时间:2017-02-27 16:04:24

标签: arrays swift dictionary

我有Dictionnary

["1hoxy7StFyU4QzQTwgDrwAoCZ": {
    address = "example2";
    date = "28-02-2017";
    location = "....";
    number = 1111;
    user = S4KaKn5Qz4bDDha57DMLcnaCHn21;
}"1hoxy7StFyU4QzQfrsqfsqfDZz": {
    address = "example2";
    date = "28-02-2017";
    location = "....";
    number = 222;
    user = S4KaKn5Qz4bDDha57DMLcnaCHn22;
}]

我想检索此user的所有Dictionnary值并将其附加到Array。 使用Firebase数据库检索此Dictionnary

  if let dict = snapshot.value as? [String : AnyObject] {

                print(dict)

                self.asksList.append(dict["user"] as! String)

                print(self.asksList)

                DispatchQueue.main.async {
                    self.tableView.reloadData()
                }
            }

我该怎么做?在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您正在使用嵌套字典,因此您可以通过这种方式获取所有user

if let dict = snapshot.value as? [String : [String:Any]] {
    for (_, value) in dict { 
        if let user = value["user"] as? String {
            self.asksList.append(user)
        }
    }       
    //Firebase completion block will called in main thread so directly reload the tableView
    self.tableView.reloadData()
}

OR 您可以使用flatMap代替遍历for循环

if let dict = snapshot.value as? [String : [String:Any]] {
    let array = dict.flatMap { $1["user"] as? String }
    self.asksList += array 
    //Firebase completion block will called in main thread so directly reload the tableView
    self.tableView.reloadData()
}