如何在.observe之外使用变量

时间:2017-03-18 00:13:40

标签: swift dictionary firebase

我目前有以下代码。这成功地从firebase中提取信息,然后将其附加到字典数组中。我的问题是如何在.observe之外使用这个词典?我理解异步vs与firebase同步的问题,但我还没有找到关于如何在另一个函数中使用这些数据的一个很好的解释。

override func viewDidLoad() {
    FIRDatabase.database().reference().child("vendors").observe(.value, with: { (snapshot) in

        let spot = snapshot.value as! [String : AnyObject]
        for each in spot{
            let name2 = each.value["name"] as! String
            let booth2 = each.value["boothNum"] as! String
            let desc2 = each.value["description"] as! String

            self.name = name2
            self.booth = booth2
            self.desc = desc2

            let dict1: [String: String] = ["name" : name2, "booth" : booth2, "desc" : desc2]

            self.vendorDict.append(dict1)

            dump(self.vendorDict)

        }
    })

这成功地转储了.observe中我需要的信息,但是如果我将字典转储到外面就说它是空的。

1 个答案:

答案 0 :(得分:0)

您最好的选择是在关闭结束时调用所需的功能,但在'之外。环。这样,您将填充字典,并且仍然在同一个线程上。 其他选择是 - 添加一个完成块并创建一个协议(由于我自己不熟悉它们,因此不能详细说明这两个)。