Это очень хороший вопрос, и ответ, вероятно, зависит от вашей ситуации. Возможно, пуристы архитектуры будут настаивать на отдельных контроллерах Model, и у этого подхода есть много преимуществ. Однако иногда я использую ключевые значения, когда делаю простое представление. Когда дела обстоят сложнее, например, при кодировании одной и той же модели для Mac и iOS, наличие отдельных контроллеров моделей позволит вам повторно использовать много кода. Когда вы должны расходиться, категории Obj C являются очень чистым способом расширения функциональности без дополнительных накладных расходов. Лично я предпочитаю категории более обширным подклассам.
С тех пор как NSFetchedResultsController был выпущен, мои классы моделей стали меньше. В этом есть много нюансов, и опыт поможет вам найти лучшее решение для вашего приложения. Я также обнаружил, что написание модульных тестов заранее поможет вам решить проблемы и проверить ваш дизайн или отправить вас обратно на чертежную доску:)