I've been fighting with NSFetchedResultsController for quite some time now, but this afternoon, I think I made it my bitch. You can actually handle this situation, though it requires a bit of gnarley code. I'm going to update the Navigation-Based Core Data Application Xcode project template shortly with this logic, but here's how you handle this problem in the fetched results controller delegate methods. Specifically look at the NSFetchedResultsChangeUpdate case statement in controller:didChangeObject:atIndexPath:forChangeType:newIndexPath:. There, we determine if the section name key path has changed, and if it has, we determine if we need to add a new section to the table. Then, we fall through tot he NSFetchedResultsChangeMove and follow the same logic.
The code has been fixed to support nested keys in the section name key path.
- (void)controllerWillChangeContent:(NSFetchedResultsController *)controller
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller
- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath
- (void)controller:(NSFetchedResultsController *)controller didChangeSection:( )sectionInfo atIndex:(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)type