If you delete the last row in a section of a UITableView, or you add an entity which would lead to the creation of a new section the NSFetchedResultsController delegate method didChangeSection gets called. You would expect this to get called as well if you move the last row of a section into another section, therefore forcing the delete of the original section. It doesn't get called in this case.
The less than perfect solution below comes from the didChangeObject delegate method, and I delete the section by hand, knowing that if there's only 1 section left then one of my sections was deleted. If there's a variable number of sections, you'll need another similar workaround.