我目前有以下代码。这成功地从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中我需要的信息,但是如果我将字典转储到外面就说它是空的。
答案 0 :(得分:0)
您最好的选择是在关闭结束时调用所需的功能,但在'之外。环。这样,您将填充字典,并且仍然在同一个线程上。 其他选择是 - 添加一个完成块并创建一个协议(由于我自己不熟悉它们,因此不能详细说明这两个)。