Ios 聊天信使UITableViewCell,正在加载消息
我正在尝试使用firebase将消息加载到我的messenger中,但是,它没有显示。我将我的单元格背景设置为浅灰色,我可以看到数据库中的消息数和浅灰色单元格的匹配情况 我使用的代码是Ios 聊天信使UITableViewCell,正在加载消息,ios,swift,firebase,Ios,Swift,Firebase,我正在尝试使用firebase将消息加载到我的messenger中,但是,它没有显示。我将我的单元格背景设置为浅灰色,我可以看到数据库中的消息数和浅灰色单元格的匹配情况 我使用的代码是 func loadMsg() { let toId = user!.id! let fromId = Auth.auth().currentUser!.uid let ref = Database.database().reference().child("privateMessages"
func loadMsg() {
let toId = user!.id!
let fromId = Auth.auth().currentUser!.uid
let ref = Database.database().reference().child("privateMessages").child(fromId).child(toId)
ref.observe(.value) { (snapshot) in
if let snapshot = snapshot.children.allObjects as? [DataSnapshot] {
self.messages.removeAll()
for data in snapshot {
let newMsg = Message(dictionary: data.value as! [String: AnyObject])
self.messages.append(newMsg)
}
}
DispatchQueue.main.async {self.tableView.reloadData()}
}
}
我的firebase数据库看起来像:
我的模拟器看起来像
在我的故事板中:
我的文字没有显示的原因是什么
*更新如下
我试着配置我的手机,现在它似乎朝着正确的方向发展,但我在我的sentView上崩溃了,因为
线程1:致命错误:在展开文件时意外发现nil
可选值
我的tableview单元格的代码是
import UIKit
import Firebase
import FirebaseDatabase
class ChatMessageCell: UITableViewCell {
var message: Message!
@IBOutlet weak var receivedMsgLabel: UILabel!
@IBOutlet weak var sentMsgLabel: UILabel!
@IBOutlet weak var sentView: UIView!
@IBOutlet weak var receivedView: UIView!
var currentUser = Auth.auth().currentUser!.uid
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
func configCell(message: Message) {
self.message = message
if message.fromId == currentUser {
sentView.isHidden = false
sentMsgLabel.text = message.textMessages
receivedMsgLabel.text = ""
receivedMsgLabel.isHidden = true
} else {
sentView.isHidden = true
sentMsgLabel.text = ""
receivedMsgLabel.text = message.textMessages
receivedMsgLabel.isHidden = false
}
}
}
as for my table is
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell: ChatMessageCell = self.tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! ChatMessageCell
let message = messages[indexPath.row]
cell.configCell(message: message)
cell.backgroundColor = UIColor.lightGray
return cell
}
我走的方向对吗??对不起,我不知道在哪里张贴我的代码,因此将其张贴在回答部分
“开始/结束外观转换的不平衡调用”
在单元格显示完成之前尝试显示内容时发生崩溃
通过创建新的自定义单元格xib进行尝试,然后重试
像这样注册
self.tableView.register(UINib(nibName: "TableViewCell", bundle: nil), forCellReuseIdentifier: "TableViewCell")
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell:TableViewCell = tableView.dequeueReusableCell(withIdentifier: "TableViewCell") as! TableViewCell
let message = messages[indexPath.row]
cell.configCell(message: message)
cell.backgroundColor = UIColor.lightGray
return cell
}
添加您的TableView代码。在我的TableView代码中添加了一件事,放置异常断点并测试应用程序崩溃的位置。此时,它正在第41行崩溃,sentView.isHidden=false,它写入了线程1:致命错误:在解包可选值时意外发现零。您检查sentView插座是否正确连接了吗?回答很好!救命恩人!