TableViewの上に更新データを追加してもスクロール位置をずらさない

TableViewの上部に更新データを追加した場合、indexPathが全てズレるので、追加する前まで見ていたセルが下に押し下げられてしまいます。

そうではなく、上に追加しても見ていたセルが移動しないようにするには、たとえば以下のようにします。

let before = messageTableView.contentSize.height
self.messageTableView.reloadData()
let after = messageTableView.contentSize.height
if(before<after) {
    self.messageTableView.contentOffset.y = after - before
}