在通过IOS重新加载时向firebase添加一行数据后,数据丢失

时间:2017-01-19 21:03:55

标签: ios swift

在IOS中,我导航到一个屏幕并通过以下代码添加数据:

let dbRow = FIRDatabase.database().reference().child("bikes").child(self.userUid).childByAutoId()

dbRow.child("brand").setValue(self.brand.text)
dbRow.child("model").setValue(self.model.text)
dbRow.child("year").setValue(self.year.text)
dbRow.child("serialNo").setValue(self.serialNo.text)
dbRow.child("store").setValue(self.store.text)
dbRow.child("imageURL").setValue(metadata?.downloadURL()!.absoluteString)

self.navigationController!.popViewController(animated: true)

在我导航回原点屏幕的ViewDidLoad功能后,我有以下代码:

FIRDatabase.database().reference().child("bikes").child(userUid).observe(FIRDataEventType.childAdded, with: { (snapshot) in

     if snapshot.exists() {
       let bike = Bike()

        bike.bikeKey = snapshot.key
        let bikeDict = snapshot.value as! [String : AnyObject]

        bike.brand = bikeDict["brand"] as! String
        bike.ImageUrl = bikeDict["imageURL"] as! String
        bike.model = bikeDict["model"] as! String
        bike.SerialNo = bikeDict["serialNo"] as! String
        bike.Store = bikeDict["store"] as! String
        bike.year = bikeDict["year"] as! String

        self.bikes.append(bike)
        self.tableView.reloadData()

    }
    //    print(self.bikes.count)
    // method to get current user id  FIRAuth.auth()!.currentUser!.uid
})

让品牌有效,但访问imageURL会返回错误EXC_BAD_INSTRUCTION。但是,在第一次加载屏幕时,将返回所有行。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您应该异步重新加载数据。我现在打电话,不确定这段代码是否有用,但你可以尝试一下:

 DispatchQueue.main.async {
                    self.tableView.reloadData()
                }