我的代码如下。 一旦我到达我写入数据库的部分,它似乎跳过了ContestName。然后它会将比赛描述和用户记录到数据库中。如果我在contestName之前首先放置了contestDescription,那么将错过contestDescription但名称将被存储。真的很时髦的bug。任何帮助,将不胜感激。
注意:我尝试过睡眠,但这根本没有帮助。
@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)
}
答案 0 :(得分:1)
在某个位置调用setValue
会替换该位置的所有现有数据。所以在这个片段中:
thisContest.setValue(["ContestName": contesttitle])
thisContest.setValue(["ContestDescription": contestdescript])
第二行正在替换第一行写的内容。
你应该将两者结合起来:
thisContest.setValue(["ContestName": contesttitle, "ContestDescription": contestdescript])
或use updateChildValues
(不会替换该位置的整个数据,只会替换您指定的属性):
thisContest.updateChildValues(["ContestName": contesttitle])
thisContest.updateChildValues(["ContestDescription": contestdescript])