The NSFetchedResultsController is a great time-saver when we’re working with a UITableView. It can drastically reduce the amount of code we need to write and make our UITableView instances perform very well. However, it has a narrowly focused purpose, and it should be avoided when you aren’t working with a UITableView. Fortunately, with a little bit of effort, we can duplicate quite a bit of its functionality and create a highly flexible class that fits into a variety of situations.