【发布时间】:2017-08-17 08:25:42
【问题描述】:
我有一个聊天消息 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)
}
}
【问题讨论】:
-
从哪里调用“loadMessages”?最好的地方是设置一个通知,在收到每条消息时调用“loadMessages”。如果您在前台,则无需执行日期等任何操作。
-
不要猜测哪些操作很慢。使用 Instruments 和 profile。
-
其实简单地赋值(排序的)数组和移除+追加的效果是一样的。
标签: ios arrays swift sorting tableview