2016-09-14 136 views
2

早上好,我正在使用Firebase并升级到新版本的Xcode我遇到了一个问题,它会向Firebase数据库发送更多数据。 以下是错误:Swift 3 xcode 8 firebase数据库更新数据时出错

Terminating app two to uncaught exception 'InvalidFirebaseData', reason: '(setValue :) Can not store object of type _SwiftValue at SenderId. Can only store objects of type NSNumber, NSString, NSDictionary, and NSArray. '

我知道是什么问题,我还搜查了互联网上,我上传的字符串,之后升级到Xcode中给了我这个错误,没有任何人有相同的数据问题?

应该等待几天,我也尝试更新Firebase,但没有对库的更新。

+1

给出您的代码当您遇到该错误 – Dravidian

+0

您正在使用哪个Swift版本?也许你必须为Swift 2.3设置遗留值? http://stackoverflow.com/questions/39490507/how-can-i-use-swift-2-3-on-xcode8 –

+0

swift 3,这是我的代码:重写func didPressSend(_ button:UIButton !, withMessageText text: String !, senderId:String!,senderDisplayName:String !, date:Date!){0} {0} {0} {0} “发送者名称”:senderDisplayName “的MediaType”: “文本”] newMessageRef.setValue(MES) self.finishSendingMessage() } – Laynay

回答

0

我有同样的错误。 这是我固定它:

我的代码有一个错误:

var videoInfoDic: Dictionary<String, Any?>? 

我怎么固定:

var videoInfoDic: Dictionary<String, Any>? 

带走了可选部分。信用: https://stackoverflow.com/a/39486888/5792500

+0

我使用String作为解决这个问题! NSString在我上传到Firebase数据库中,在DidPressSend Button – Laynay

1

我一直工作在同一JSQMessage库,,按钮代码更改为这个,,我把它固定,,让我知道如何去

var messageRef = FIRDatabase.database().reference().child("messages") 


override func didPressSend(_ button: UIButton!, withMessageText text: String!, senderId: String!, senderDisplayName: String!, date: Date!) { 

    let newMessage = messageRef.childByAutoId() 

    let messageData: Dictionary<String, Any>? = ["text": text, "senderId": senderId, "senderName": senderDisplayName, "mediaType": "TEXT"] 

    newMessage.setValue(messageData) 

} 

我加入字典<字符串,任何>?在我的按钮里面的第二行代码行动来解决问题

+0

我用String解决了这个问题! NSString在我的上传到Firebase数据库,在DidPressSend按钮 – Laynay

3

它也可以在JSQMessage上工作!

var messageRef = FIRDatabase.database().reference().child("messages") 

let newMessage = messageRef.childByAutoId() 
let messageData: Dictionary<String, Any>? = ["text": text, "senderId": senderId, "senderName": senderDisplayName, "mediaType": "TEXT"] 
newMessage.setValue(messageData) 
+0

我解决了这个问题使用字符串作为! NSString在我上传到Firebase数据库中的DidPressSend Button中 – Laynay