我正在尝试使用观察者从firebase获取数据。但是当我尝试将值附加到我之前创建的数组中时,它会失败。这是代码,有人可以帮帮我吗?
class ProductTableViewController: UITableViewController{
var productName:[String] = []
override func viewDidLoad() {
super.viewDidLoad()
fetchProduct()
print(self.productName.count)
}
func fetchProduct(){
let currentUserId = FIRAuth.auth()?.currentUser?.uid
FIRDatabase.database().reference().child("users").child(currentUserId!).child("products").observe(.value, with: { (snapshot) in
self.productName.append("Hello")
}, withCancel: nil)
}
我将值附加到该数组后应该打印1 但它打印0。
答案 0 :(得分:0)
你必须知道Firebase观察者是异步的,所以即使你先调用它,它也必须等待响应。与此同时,您的应用将继续使用其余代码,因此它将调用打印功能。如果你想证明它,请尝试将打印放在firebase调用中:
class ProductTableViewController: UITableViewController{
var productName:[String] = []
override func viewDidLoad() {
super.viewDidLoad()
fetchProduct()
}
func fetchProduct(){
let currentUserId = FIRAuth.auth()?.currentUser?.uid
FIRDatabase.database().reference().child("users").child(currentUserId!).child("products").observe(.value, with: { (snapshot) in
self.productName.append("Hello")
print(self.productName.count)
}, withCancel: nil)
}
希望它有所帮助!