在通过IOS重新加载时向firebase添加一行数据后,数据丢失
在IOS中,我导航到屏幕并通过以下代码添加数据:在通过IOS重新加载时向firebase添加一行数据后,数据丢失,ios,swift,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(sel
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)
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
})
在返回并在原始屏幕的ViewDidLoad
功能中导航后,我有以下代码:
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)
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\u BAD\u指令
。但是,在第一次加载屏幕时,将返回所有行。有什么想法吗?您应该异步重新加载数据。我正在打电话,不确定此代码是否有效,但您可以尝试一下:
DispatchQueue.main.async {
self.tableView.reloadData()
}
您应该异步重新加载数据。我正在打电话,不确定此代码是否有效,但您可以尝试一下:
DispatchQueue.main.async {
self.tableView.reloadData()
}
欢迎来到堆栈溢出!您可以先学习并创建一个示例。这使我们更容易帮助你。在工作中,我们有一条规则:永远不要明确地打开包装!丢失信息比强行撞车要好。这会帮你省去麻烦…欢迎使用堆栈溢出!您可以先学习并创建一个示例。这使我们更容易帮助你。在工作中,我们有一条规则:永远不要明确地打开包装!丢失信息比强行撞车要好。它会帮你省去头痛。。。