В общем случае вы отлавливаете событие, когда рисуется последняя ячейка. После этого выполняете загрузку данных и добавляете их в таблицу (или методом insertRowsAtIndexPaths или reloadData), перед этим же конечно запихнув их в модель.
override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
let lastRow = indexPath.row
if lastRow == objects.count - 1 {
fetchData(lastRow)
}
}
private func fetchData(lastRow: Int) {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * Int64(NSEC_PER_SEC)), dispatch_get_main_queue()) { () -> Void in
let object = "New data"
self.objects.append(object)
self.tableView.insertRowsAtIndexPaths([NSIndexPath(forRow: lastRow + 1, inSection: 0)], withRowAnimation: .Automatic)
}
}