Обновление:
Я вернулся к созданию NSFetchedResultsControllers внутри UITableViewControllers.
Я также использовал категорию в NSManagedObjectContext для запросов. Кроме того, я помещаю больше логики в категории в моих подклассах NSmanagedObject.
В целом, я доволен архитектурой, которую я использовал в последнее время.
Оригинальный ответ:
Полагаю, я опубликую свое мнение по этому вопросу.
Так как NSFetchedResultsController является базовым классом, а не классом UIKit, он кричит мне модель.
То же самое для NSFetchRequest.
Похоже, что создание NSFetchRequest зависит от знания модели данных, о которой вы могли бы утверждать, что UITableViewController не должен знать.
Это привело меня к нескольким идеям о том, как должен выглядеть граф объектов.
Один из вариантов - создать подкласс NSFetchedResultsController и сделать его похожим на фабричный класс, где я возвращаю полностью настроенные экземпляры NSFetchedResultsController. Это сохраняет NSFetchRequest Construction.
Другой вариант очень похож, но вместо того, чтобы создавать подклассы NSFetchedResultsController, я создаю подкласс или категорию NSObject, которые выполняют ту же работу.
Кажется, что оба эти параметра лучше соответствуют MVC, чем использование UITableViewController для выполнения этих задач.