在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
。但是,在第一次加载屏幕时,将返回所有行。有什么想法吗?
答案 0 :(得分:0)
您应该异步重新加载数据。我现在打电话,不确定这段代码是否有用,但你可以尝试一下:
DispatchQueue.main.async {
self.tableView.reloadData()
}