0
我目前擁有下面的代碼。這成功地從firebase中獲取信息,然後將其附加到字典數組中。我的問題是如何在.observe之外使用這本詞典?我瞭解異步與同步的Firebase問題,但我還沒有找到一個很好的解釋,說明如何在另一個功能中使用這些數據。如何使用.observe以外的變量
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中的信息,但如果我在它之外轉儲字典說它是空的。
您是否知道*爲什麼*您無法訪問您的「spot」var?它被稱爲*變量範圍*。它在閉包中聲明,所以你將無法訪問它。如果你用一個不同的範圍來定義它 - 比如* viewDidLoad()*之外 - 你可以訪問它。 (你可能需要在封閉內部添加* self *,但這沒關係。) – dfd
Im試圖訪問我的viewDidLoad()之外的字典數組。通過將數據追加到數組中,我仍然可以訪問數組,不是嗎? – ttorbik
我想我知道這個問題。你可以發佈* vendorDict *的定義嗎? – dfd