swift3 append函数在firebase observeSingleEvent中不起作用

时间:2017-04-04 05:28:06

标签: ios arrays swift firebase firebase-realtime-database

我正在尝试使用观察者从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。

1 个答案:

答案 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)
}

希望它有所帮助!