无法使用类型为((Any ?,(Error ?, DatabaseReference)-> Void)'的参数列表调用'setValue'

时间:2019-03-18 13:26:35

标签: ios swift firebase firebase-realtime-database

我想将结构对象发送到firebase。

struct commentsData{
        var commentsText:String
        var commentTime:String
        var commentDay:String
        var commentMonth:String
        var commentYear:String
    }

    var data = commentsData(commentsText: "", commentTime: "", commentDay: "", commentMonth: "", commentYear: "")

    Database.database().reference().child("CommentData").child(commentId).setValue(data){
                     (error:Error?, ref:DatabaseReference) in


                }

要解决这个问题我应该做些什么。

2 个答案:

答案 0 :(得分:2)

我认为您不能像那样直接添加对象,而是必须将数据作为字典传递。因此,您可以在结构内添加以下代码,

var dict:[String:String] {
    return [
        "commentsText": commentsText,
        "commentTime": commentTime,
        "commentDay": commentDay,
        "commentMonth": commentMonth,
        "commentYear": commentYear
    ]
}

然后

var data = commentsData(commentsText: "1", commentTime: "1", commentDay: "1", commentMonth: "1", commentYear: "1")


Database.database().reference().child("CommentData").child(commentId).setValue(data.dict) {  (error, ref) in
          // continue here 
        }

答案 1 :(得分:1)

您需要编写不带类型的补全

var data:[String:Any] = ["key":"value"] //
FIRDatabase.database().reference().child("CommentData").child(commentId).setValue(data) { (err, ref) in

}