Swift 未正确附加消息
每当我尝试将消息附加到JSQMessages数组时,它不会出现在collectionView的末尾 错误演示: 检索邮件的我的代码:Swift 未正确附加消息,swift,jsqmessagesviewcontroller,Swift,Jsqmessagesviewcontroller,每当我尝试将消息附加到JSQMessages数组时,它不会出现在collectionView的末尾 错误演示: 检索邮件的我的代码: func retrieveMessages() { let messagesRef = databaseRef.child("messages") var senderID : String! var recieverID : String! var message : JSQMessage! messagesRef.ob
func retrieveMessages() {
let messagesRef = databaseRef.child("messages")
var senderID : String!
var recieverID : String!
var message : JSQMessage!
messagesRef.observe(.value, with: { (snapshot) in
if let dictionary = snapshot.value as? [String : AnyObject] {
self.messages.removeAll()
for each in dictionary {
let mediaType = each.value["mediaType"] as! String
let text = each.value["text"] as! String
let senderDisplayName = each.value["senderDisplayName"] as! String
senderID = each.value["senderID"] as! String
recieverID = each.value["reciverID"] as! String
let time = each.value["time"] as! Int
message = JSQMessage(senderId: senderID, displayName: senderDisplayName, text: text)
if senderID == FIRAuth.auth()?.currentUser?.uid {
if recieverID == self.userUID {
self.messages.append(message)
self.collectionView.reloadData()
}
}
}
}
override func didPressSend(_ button: UIButton!, withMessageText text: String!, senderId: String!, senderDisplayName: String!, date: Date!) {
JSQSystemSoundPlayer.jsq_playMessageSentSound()
finishSendingMessage(animated: true)
let newMessage = messagesRef.childByAutoId()
let currentTime = Date()
let currentTimePassed = currentTime.timeIntervalSince1970
let timeInt = Int(currentTimePassed)
let messageData = ["text" : text, "senderID" : senderId, "senderDisplayName" : senderDisplayName, "mediaType" : "TEXT", "reciverID" : userUID, "time" : timeInt] as [String : Any]
newMessage.setValue(messageData)
}
我发送消息的代码:
func retrieveMessages() {
let messagesRef = databaseRef.child("messages")
var senderID : String!
var recieverID : String!
var message : JSQMessage!
messagesRef.observe(.value, with: { (snapshot) in
if let dictionary = snapshot.value as? [String : AnyObject] {
self.messages.removeAll()
for each in dictionary {
let mediaType = each.value["mediaType"] as! String
let text = each.value["text"] as! String
let senderDisplayName = each.value["senderDisplayName"] as! String
senderID = each.value["senderID"] as! String
recieverID = each.value["reciverID"] as! String
let time = each.value["time"] as! Int
message = JSQMessage(senderId: senderID, displayName: senderDisplayName, text: text)
if senderID == FIRAuth.auth()?.currentUser?.uid {
if recieverID == self.userUID {
self.messages.append(message)
self.collectionView.reloadData()
}
}
}
}
override func didPressSend(_ button: UIButton!, withMessageText text: String!, senderId: String!, senderDisplayName: String!, date: Date!) {
JSQSystemSoundPlayer.jsq_playMessageSentSound()
finishSendingMessage(animated: true)
let newMessage = messagesRef.childByAutoId()
let currentTime = Date()
let currentTimePassed = currentTime.timeIntervalSince1970
let timeInt = Int(currentTimePassed)
let messageData = ["text" : text, "senderID" : senderId, "senderDisplayName" : senderDisplayName, "mediaType" : "TEXT", "reciverID" : userUID, "time" : timeInt] as [String : Any]
newMessage.setValue(messageData)
}
你能在发送消息时显示你的代码吗?添加了我发送消息的代码在你的Firebase数据库中消息数据的顺序是什么?例如,GIF演示中的“好”文本在数据库中的顺序是否正确?如果是这样,那么我们可以安全地假设您的
接收消息代码是错误的。