Использовать UIViewController против отдельного объекта источника данных для управления объектами модели? - PullRequest
1 голос
/ 11 сентября 2011

Я пишу простое приложение для iOS, которое использует табличное представление для отображения информации из набора объектов модели (каждый является экземпляром "NTTrip").Я решаю, использовать ли один подкласс UITableViewController для управления как представлением, так и набором объектов модели, или же мне следует разделить логику управления объектами модели на новый объект, который будет действовать как источник данных для табличного представления (то есть своего рода разделить логику на «контроллер представления» и «контроллер модели»).Это хорошая идея, или я бы добавил дополнительную сложность в систему, которая не обязательно нуждается в этом?

Ответы [ 2 ]

1 голос
/ 11 сентября 2011

Контроллеры, как правило, являются наиболее сложной частью вашего приложения и должны взаимодействовать с данными и управлять представлением. В iOS у вас обычно нет контроллеров данных. Таким образом, ваш контроллер табличного представления также должен связываться с вашей моделью, чтобы отображать правильные данные для вашего табличного представления. Если другой контроллер данных будет общаться с моделью данных и выступать в качестве источника данных, что еще будет делать ваш оригинальный контроллер? Другая крайность, конечно, состоит в том, чтобы разделить каждую часть работы в отдельный контроллер ... но вы видите проблему с этим.

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

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

1 голос
/ 11 сентября 2011

В общем, мне нравится разделять определенные обязанности, такие как источник данных UITableView, на контроллеры не-UIViewController.Я думаю, что это разделение облегчает тестирование и обслуживание моих контроллеров.

Однако это не всегда имеет смысл.Если вы рассматриваете возможность использования UITableViewController, то это означает, что вы ожидаете, что ваше табличное представление заполнит экран, и здесь, вероятно, не так много других вариантов поведения, за которые будет отвечать ваш подкласс UIViewController.Я думаю, что несколько контроллеров были бы излишне сложными, если бы не были четкие независимые обязанности для каждого контроллера.

Одной из альтернатив может быть наличие одного подкласса UIViewController, который действует как делегат и источник данных табличного представления.Этот контроллер может вызывать некоторые NTTripService контроллеры, которые могут отвечать за загрузку и сохранение ваших NTTrip объектов и делать их доступными для отображения во многих подклассах UIViewController.

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