2017-03-29 12 views
0

私はdbに2つのデータを書き込もうとしています。DBへの書き込みに失敗しましたか?

@IBAction func show(button: UIButton) { 

     let userRef = self.dataBaseRef.child("users/\(FIRAuth.auth()!.currentUser!.uid)") 
     userRef.observe(.value, with: { (snapshot) in 
      let user = User(snapshot: snapshot) 
      let currentUser = user.email 
      let request = Requests(requestBy: user.email!, 
            requestTo: self.email!) 

      let contactRef = self.ref.child(currentUser! + "--" + self.email!) 
      contactRef.setValue(request.toAnyObject()) 
      self.items.append(request) 
      print(request) 
     }) { (error) in 
      print(error.localizedDescription) 
     } 

     self.dismiss(animated: true, completion: nil); 

} 

項目は、アレイ

var items: [Requests] = [] 

user.emailとself.emailです!私はそれを印刷した空ではありません。

要求ファイルは

struct Requests { 

let key: String 
let requestBy: String 
let requestTo: String 
let ref: FIRDatabaseReference? 

init(requestBy: String, requestTo: String, key: String = "") { 
    self.key = key 
    self.requestBy = requestBy 
    self.requestTo = requestTo 
    self.ref = nil 
} 

init(snapshot: FIRDataSnapshot) { 
    key = snapshot.key 
    let snapshotValue = snapshot.value as! [String: AnyObject] 
    requestBy = snapshotValue["requestBy"] as! String 
    requestTo = snapshotValue["requestTo"] as! String 
    ref = snapshot.ref 
} 

func toAnyObject() -> Any { 
    return [ 
     "requestBy": requestBy, 
     "requestTo": requestTo 
    ] 
} 

}

を見て、私はエラーを取得しています - 私はあなたの投稿をコードで見ているところによると

+0

どこが壊れていますか?最初のコードは閉鎖されていることがわかります。それはカットされています。コード全体を含めてください。ありがとうございました。 –

+0

@GiuseppeLanza私はそれを編集しました。 – patrikbelis

+0

あなたはそれがクラッシュした行を追加できますか? – muescha

答えて

0
let currentUser = user.email //this is not an optional 
let request = Requests(requestBy: user.email!, 
            requestTo: self.email!) 

contactRef = self.ref.child(currentUser! + "--" + self.email!) 

あるCurrentUser:あなたのような、そのオプションのラップを解除することができます場合は、最初に確認する必要があります!アンラップする必要はありません。

2

をオプションの値をアンラップしながら、予期せず、nilを見つけ要求を作成しますが、決してrefプロパティに値を割り当てません。しかし、どこがクラッシュするのか、いつ実際に使われているのかわからないので、明確ではありません。また

、これが問題になる可能性がある(あなたがあなたの目に見えるコード内でそのように扱われてきたように)self.refがオプションであると仮定すると:

contactRefは= self.ref.child

てみましょう

if let realRef = self.ref { realRef.child(currentUser! + "--" + self.email!) }

+0

ボタンの完全なコードを投稿しました。ボタンを押すとクラッシュします。 – patrikbelis

+0

この行に従う: let request = Requests(requestBy:user.email !, requestTo:self.email!) あなたのユーザーの電子メールプロパティはオプションで、そこでアンラップしています。しかし、前の行ではあなたはしませんでした。だから、あなたが本当にすべての値を持っているかどうかを最初に確認することをお勧めします。 let email = user.email { //このメールを必要とするすべてのコードをここに入れてください } – ihonahan

関連する問題