Protocols and MVVM in Swift to avoid repetition

Thomas Degry demonstrates how we can use MVVM and protocols to avoid achieve two goals: avoiding massive view controllers (MVC!), and having as little repetitive code as possible. It's a nice simple use of a protocol to create a more generic table view, and it's something I have myself used in projects.