2017-06-17 15 views
0

私のコードは次のとおりです。 データベースに書き込む部分に到達すると、ContestNameをスキップするように見えます。その後、コンテストの記述とユーザーをデータベースに記録します。私がcontestNameの前にcontestDescriptionを置くと、contestDescriptionは見落とされますが、名前は格納されます。本当にファンキーなバグ。どんな助けもありがとう。Firebaseがすべての引数を取っていない

注:私は睡眠を試みたが、それはまったく役に立たなかった。場所にsetValueを呼び出す

@IBAction func SubmitContest(_ sender: Any) { 

//Convert to text 
     let contesttitle = ContestName.text; 
     let contestdescript = ContestDescription.text; 

//Some Firebase Stuff 
     let userID = Auth.auth().currentUser?.uid 
     let contestRef = ref.child("craftType").child("Custom") 
     let thisContest = contestRef.childByAutoId() 

//Store to firebase 
//Whatever one is first is not making it to firebase database 
     thisContest.setValue(["ContestName": contesttitle]) 
     thisContest.setValue(["ContestDescription": contestdescript]) 
     thisContest.child("User").setValue(userID) 
    } 

答えて

1

はその場所ですべての既存のデータを置き換えます。したがってこのスニペットでは、

thisContest.setValue(["ContestName": contesttitle]) 
thisContest.setValue(["ContestDescription": contestdescript]) 

最初の行が何を書き込んでも、2番目の行が置き換えられます。

次の2つを組み合わせる必要があり、次のいずれか

(ロケーションで、唯一、指定したプロパティでデータ全体を置き換えるものではありません)
thisContest.setValue(["ContestName": contesttitle, "ContestDescription": contestdescript]) 

またはuse updateChildValues

thisContest.updateChildValues(["ContestName": contesttitle]) 
thisContest.updateChildValues(["ContestDescription": contestdescript]) 
関連する問題