如何在tableView swift中使Array快速追加和排序

时间:2017-08-17 08:25:42

标签: ios arrays swift sorting tableview

我有一个聊天消息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)
    }

}

1 个答案:

答案 0 :(得分:0)

在任何聊天中很少使用reloadData(),因为您可以在聊天视图中看到很多消息。

相反,您应该重新加载(重新布局)特定项目(或单元格)。因为你应该创造不同的状态。 您可以将任何库用于差异(例如 - https://github.com/wokalski/Diff.swift

此外,您可以使用nMessenger(https://github.com/eBay/NMessenger),这是完美的。基于AsinteDisplayKit(又名纹理)的Pinterest的Messenger视图。