Абстракция модели-контроллера с базовыми данными - PullRequest
1 голос
/ 16 марта 2012

Узнавая о Core Data, я заметил, как (в шаблонах Xcode) Apple напрямую использовала классы запросов внутри контроллера представления. Это кажется плохим MVC (логика доступа к базе данных прямо внутри контроллера представления). Имеет ли смысл абстрагировать подобные действия в отдельный набор классов, которые получают данные из базы данных и передают их обратно в контроллер представления, вызывающий их?

Edit-

Итак, для ясности, когда я говорю "виды действий", я конкретно имею в виду операции CRUD. Хотя, если у вас есть идеи о других вещах, которые мог бы сделать так называемый «модельный контроллер», мне было бы интересно услышать о них.

Ответы [ 2 ]

2 голосов
/ 17 марта 2012

Это вопрос мнения, и часто да, шаблоны - это самая простая форма рабочего примера.Например, трудно заставить шаблон раскручивать несколько файлов.

Да, лично я обычно выделяю отдельный подкласс NSManagedObject.Мне нравится иметь объект _MySubclass, который имеет все автоматически сгенерированные вещи, а затем модель фактически ссылается на MySubclass, который имеет бизнес-логику, основанную на модели (вы можете использовать mogenerator или другие методы, чтобы сделать это тоже, если это так).Возможно, думать об этом как о «контроллерах моделей» и «контроллерах представления» - это еще один способ выразить это.

0 голосов
/ 21 марта 2012

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

С тех пор как NSFetchedResultsController был выпущен, мои классы моделей стали меньше. В этом есть много нюансов, и опыт поможет вам найти лучшее решение для вашего приложения. Я также обнаружил, что написание модульных тестов заранее поможет вам решить проблемы и проверить ваш дизайн или отправить вас обратно на чертежную доску:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...