2017-06-17 3 views
0

Mein Code geht wie folgt. Sobald ich zu dem Teil komme, wo ich in die Datenbank schreibe, scheint es über ContestName zu überspringen. Dann werden die Wettbewerbsbeschreibung und der Benutzer in die Datenbank aufgenommen. Wenn ich contestDescription zuerst vor contestName schreibe, dann wird die contestDescription verpasst, aber der Name wird gespeichert. Wirklich funky Bug. Jede Hilfe wäre willkommen.Firebase nimmt nicht alle Argumente

HINWEIS: Ich versuchte einen Schlaf, aber das half überhaupt nicht.

@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) 
    } 

Antwort

1

Der Aufruf von setValue an einem Speicherort ersetzt alle vorhandenen Daten an diesem Speicherort. Also in diesem Schnipsel:

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

Die zweite Zeile ersetzt was auch immer die erste Zeile schreibt.

Sie entweder die beiden kombinieren sollte:

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

Oder use updateChildValues (das ersetzt nicht die gesamten Daten an der Stelle, sondern nur an den Eigenschaften geben Sie):

thisContest.updateChildValues(["ContestName": contesttitle]) 
thisContest.updateChildValues(["ContestDescription": contestdescript]) 
Verwandte Themen