Firebase没有采取所有参数

时间:2017-06-17 00:01:40

标签: ios swift firebase

我的代码如下。 一旦我到达我写入数据库的部分,它似乎跳过了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)
    }

1 个答案:

答案 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])