【发布时间】:2017-07-31 23:57:18
【问题描述】:
我正在尝试将从我的 firebase 数据库中检索到的数据传递到我的单例字段中。数据是通过闭包接收的,在那个闭包中,我将一些数据传递到我的单例属性中。如果我在闭包内打印数据结构(在分配了所有内容之后),我会得到我期望的输出,但是如果我在应该传入所有数据之后在初始化程序的末尾打印它,它是空的。
import Foundation
import Firebase
class EmployeeList {
static let sharedInstance = EmployeeList()
var employeeDictionary: [String: [EmployeeData]]
var ref: DatabaseReference!
private init() {
employeeDictionary = [String: [EmployeeData]]()
ref = Database.database().reference()
ref.child("employeeList").observeSingleEvent(of: .value, with: { snapshot in
if let dictionary = snapshot.value as? [String: [String: AnyObject]] {
for subsection in dictionary {
var subsectionEmployees: [EmployeeData] = []
for item in subsection.value {
self.ref.child("employeeList/\(subsection.key)/\(item.key)").observeSingleEvent(of: .value, with: { employeeSnapshot in
let employeeObject = EmployeeData(snapshot: employeeSnapshot)
subsectionEmployees.append(employeeObject)
self.employeeDictionary[subsection.key] = subsectionEmployees
//print(self.employeeDictionary) This print statement prints out the expected data every time another employee is appended
})
}
}
}
//print(self.employeeDictionary) This print statement prints an empty data structure
})
}
}
【问题讨论】:
-
这是因为当您从 Firebase 获取数据时,调用是异步的,因此更早地调用了外部打印。
-
关注link
标签: ios swift firebase firebase-realtime-database