不从观察区块退出。
不打印hello或事件。
坚持从数据库中取货。
显示Firebase中的数据,但不在块外。
例如:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let databaseRef = FIRDatabase.database().reference()
databaseRef.child("Events").queryOrderedByKey().observe(.childAdded, with: {
snapshot in
print(snapshot)
var temp : event = event()
temp.name = (snapshot.value as? NSDictionary)?["name"] as? String ?? ""
temp.description = (snapshot.value as? NSDictionary)?["description"] as? String ?? ""
temp.date = (snapshot.value as? NSDictionary)?["date"] as? String ?? ""
temp.price = (snapshot.value as? NSDictionary)?["price"] as? String ?? ""
temp.venue = (snapshot.value as? NSDictionary)?["venue"] as? String ?? ""
temp.genre1 = (snapshot.value as? NSDictionary)?["genre1"] as? String ?? ""
temp.genre2 = (snapshot.value as? NSDictionary)?["genre2"] as? String ?? ""
temp.img = (snapshot.value as? NSDictionary)?["img"] as? String ?? ""
self.events.append(temp)
print(self.events)
})
print("Hello")
print(self.events)
}
提前致谢!
答案 0 :(得分:1)
这里几件事: -
您正在使用 childAdded
作为 FIRDataEventType ,只有在事件时才会触发此查询节点将获得附加值。如果要访问数据库节点中的当前数据,请使用 value
。
databaseRef.child("Events").queryOrderedByKey().observe(.value, with: {
print(self.events)
之外的 completionBlock:
语句将无效,因为对firebase数据库的make是异步的,但只有completionBlock中的print(self.events)
语句只会起作用。
如果案件是你的viewDidLoad未被调用,那么当时你可能不在右侧的viewController上。