2016-09-14 3 views
2

Morgen alle, ich benutze Firebase und ein Upgrade auf die neue Version von Xcode Ich stieß auf ein Problem beim Senden von mehr Daten an die Firebase-Datenbank. Hier ist der Fehler:Swift 3 xcode 8 Firebase-Datenbank Fehler beim Aktualisieren von Daten

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. '

Ich verstehe, was das Problem ist, und ich suchte auch im Internet, die Daten, die ich das Hochladen bin sind Strings, nach dem Xcode Upgrade gibt mir diesen Fehler, jemand das gleiche hat Problem?

Sollte ein paar Tage warten, habe ich auch versucht, Firebase zu aktualisieren, aber es gibt kein Update für die Bibliothek.

+1

Geben Sie Ihren Code, wo Sie diesen Fehler – Dravidian

+0

Welche Swift-Version verwenden Sie? Vielleicht müssen Sie den alten Wert für Swift 2.3 festlegen? http://stackoverflow.com/questions/39490507/how-can-i-use-swift-2-3-on-xcode8 –

+0

swift 3, das ist mein Code: override func didPressSend (_ button: UIButton !, withMessageText text: String !, senderId: String !, senderDisplayName: String !, Datum: Datum!) { Lassen Sie newMessageRef = messageRef.child (roomId) .childByAutoId() Lassen Sie mes = ["text": text, "senderId": senderId "sender": senderDisplayName "Mediatype": "text"] newMessageRef.setValue (mes) self.finishSendingMessage() } – Laynay

Antwort

0

Ich habe den gleichen Fehler. das ist, wie ich es fest:

meinen Code, der einen Fehler hatte:

var videoInfoDic: Dictionary<String, Any?>? 

, wie ich festgelegt:

var videoInfoDic: Dictionary<String, Any>? 

nahm den optionalen Teil entfernt. Kredit: https://stackoverflow.com/a/39486888/5792500

+0

ich löste das Problem mit String wie! NSString in meinem Upload in Firebase-Datenbank, in DidPressSend Button – Laynay

1

i auf demselben JSQMessage Bibliothek gearbeitet haben ,, um das Ihr Button-Code ändern ,, Ich habe es feste ,, lassen Sie mich wissen, wie es

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) 

} 

geht i die zugegebene Wörterbuch < Schnur, beliebig>? auf der zweiten Zeile des Codes innerhalb meiner Schaltfläche Aktion, um das Problem zu beheben

+0

Ich löste das Problem mit String als! NSString in meinem Upload in Firebase-Datenbank, in DidPressSend Button – Laynay

3

Es arbeitete auf JSQMessage auch !!!

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

Ich löste das Problem mit String als! NSString in meinem Upload in Firebase-Datenbank, in DidPressSend Button – Laynay