2017-01-19 2 views
1

が欠落し、IOSを介してリロードにfirebaseするデータの行を追加した後、私は画面に移動し、次のコードを介してデータを追加します。私はバック移動後データが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

ようこそ!最初に[ツアー(http://stackoverflow.com/tour)に参加して[良い質問をする方法](http://stackoverflow.com/help/how-to-ask)を学んで[最小、完全、および検証可能](http://stackoverflow.com/help/mcve)の例を参照してください。そうすれば、私たちがあなたを助けやすくなります。 –

+0

職場では明示的にラップしないというルールがあります。 強制的にクラッシュするよりも情報が欠けている方が良い。それはあなたの頭痛を保存します... –

答えて

0

データを非同期でリロードする必要があります。私は今電話をかけていますが、このコードがうまくいくかどうか分かりませんが、試してみてください:

DispatchQueue.main.async { 
        self.tableView.reloadData() 
       } 
関連する問題