我有一个聊天消息tableView,我想加载消息
有任何想法让tableView快速重新加载邮件吗?
我试着这个功能。
但我不知道如何做得更好。
感谢。
var contents:[ChatroomMessage] = [ChatroomMessage]()
func loadMessages() {
//I think remove and append are very cost time
self.contents.removeAll(keepingCapacity: false)
self.chatroom.messages.forEach({ (id,message) in
self.contents.append(message)
})
if contents.count == 0 {
return
}
self.contents.sort(by: { (a,b) in
a.datetime < b.datetime
})
self.tableView.reloadData()
if self.contents.count > 0 {
self.tableView.scrollToRow(at: IndexPath.init(row: self.contents.count-1,section: 0), at: .bottom, animated: false)
}
}
答案 0 :(得分:0)
在任何聊天中很少使用reloadData()
,因为您可以在聊天视图中看到很多消息。
相反,您应该重新加载(重新布局)特定项目(或单元格)。因为你应该创造不同的状态。 您可以将任何库用于差异(例如 - https://github.com/wokalski/Diff.swift)
此外,您可以使用nMessenger(https://github.com/eBay/NMessenger),这是完美的。基于AsinteDisplayKit(又名纹理)的Pinterest的Messenger视图。