チャットメッセージ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を使用してください。* –
実際に単純に(ソートされた)配列を割り当てることは、* removed + appending *と同じ効果を持ちます。 – vadian