我对ios开发有点新鲜。
我使用swift和firebase在一些教程后创建了一个消息传递应用程序。
我最近遇到了一个错误,有时,当我想发送消息时:我会写出我的消息,然后我会按发送。消息将在实时数据库上更新,但文本字段不会清除,并且消息不会显示。然后我会多次按下发送按钮,同样的事情会发生。直到最后,所有消息都会立即发送。
我有点困惑,我的代码有问题,还是这是一个firebase问题。有没有解决方法?
func handleSend() {
if chattextfield.text?.characters.count != 0 {
let ref = FIRDatabase.database().reference().child("messages")
let childRef = ref.childByAutoId()
//is it there best thing to include the name inside of the message node
let toId = user!.id!
let fromId = (userdefaults.objectForKey("FBid")) as! String
let timestamp: NSNumber = Int(NSDate().timeIntervalSince1970)
let values = ["text": chattextfield.text!, "toId": toId, "fromId": fromId, "timestamp": timestamp]
// childRef.updateChildValues(values)
childRef.updateChildValues(values) { (error, ref) in
if error != nil {
print(error)
return
}
self.chattextfield.text = nil
guard let toId = self.user?.id else {
return
} //unwrap this carefully 8:43, later ...
let userMessagesRef = FIRDatabase.database().reference().child("user-messages").child(fromId).child(toId)
let specificMessages = FIRDatabase.database().reference().child("messages received").child(toId).child(self.userdefaults.objectForKey("FBid") as! String)
let messageId = childRef.key
userMessagesRef.updateChildValues([messageId: 1])
specificMessages.updateChildValues([messageId: 1])
let recipientUserMessagesRef = FIRDatabase.database().reference().child("user-messages").child(toId).child(fromId)
recipientUserMessagesRef.updateChildValues([messageId: 1])
}
}