Идет ли установка текста простой текстовой метки против MVC? - PullRequest
2 голосов
/ 15 января 2012

В MVC представление не должно содержать свои данные.Однако я знаю, что в Objective-c вы делаете: [textField setString:@"hello"];, эта строка затем сохраняется в текстовом поле.То же самое относится к шрифту и цвету текста textField и т. Д.

Однако UITableView использует источник данных, чтобы запросить данные у контроллера, затем он должен перезагрузить представление таблицы.Но он также хранит некоторые данные, например, цвет фона.

Я могу понять причину, по которой UITextView не использует источник данных, код стал бы намного длиннее, если бы каждое свойство должно было бытьметод.Но зачем использовать источник данных в некоторых случаях, а не в других, почему бы просто не установить массив UITableViewCells (я знаю, что это означает, что ячейки не могут быть повторно использованы, и поэтому он будет использовать больше памяти, но какая другая причина дизайна есть), дляUITableView для отображения?

И когда вы создаете свои собственные объекты, как узнать, когда просто хранить небольшое количество общих данных (например, строка, которую отображает текстовое представление, может быть только строкой, но любая строка сама можетбыть чем-либо) в представлении, или использовать источник данных?

Ответы [ 2 ]

1 голос
/ 15 января 2012

MVC - это образец, а не указ. Позвольте представлению сделать работу. Некоторая связь будет происходить. Следуйте указаниям шаблона и адаптируйте его к стилю и желаниям ваших разработчиков и организации.

0 голосов
/ 15 января 2012

Я не знаком с фреймворком MVC для target-c, но думаю, что понимаю вопрос.

По сути, вы не хотите, чтобы представление выполняло какие-либо действия с бэкэндом источника данных, то есть не имело бы никакого отношения к обеспечению доступа к БД.

Но для представления нормально иметь доступ и использовать данные . Это М часть MVC. Модель передается вокруг. Вид знает, как это отобразить. Контроллер знает, как сделать с ним бизнес-логику (включая взаимодействие с бэкэнд-системами, такими как уровень доступа к данным).

В случае с сеткой данных для получения данных он должен попасть в бэкэнд, поэтому он должен полагаться на контроллер.

В идеале представление знает только о отображаемой информации (например, цвет фона). Вся идея заключается в разделении интересов. Вы хотите, чтобы представление обрабатывало только свою часть вещей, подобно контроллеру. Затем вы можете изменять их независимо друг от друга.

Что касается специфики источника данных (по сравнению с массивом), сетки, как правило, являются сложными. Может быть, это обработка пейджинга или другие тонкости. В этом случае я не думаю, что разделение слоев (так как массив может быть такой же простой моделью), как в этом случае, но больше функциональности.

Я не уверен, что вы имеете в виду, когда храните небольшие объемы данных в представлении. Представление должно иметь тенденцию иметь дело с «материалом представления».

...