iOS MVC: получить класс контроллеров представления от модели? - PullRequest
1 голос
/ 26 марта 2012

У меня есть несколько сущностей, которые управляются пользовательскими классами NSManagedObject.Они перечислены в разных контроллерах представления.Подклассы управляемых объектов имеют общий абстрактный суперкласс, который содержит общие атрибуты (скажем, его title как NSString и favorite как BOOL).У меня есть контроллер просмотра для избранного, который перечисляет, ну .. все объекты с атрибутом favorite как true.Поскольку избранное имеет разные классы - нормально ли выводить (или получать) класс контроллера представления из соответствующего подкласса абстрактного суперкласса этих управляемых объектов?Я нарушаю MVC здесь?

Обновление

Некоторые пояснения для sergio : Допустим, у меня есть абстрактный суперкласс Animal и подклассы типа Cat, Dog.Их экземпляры представляют отдельных животных (например, животных с именами).Тогда у меня есть CatsViewController и DogsViewController.Они перечисляют экземпляры соответствующего Animal подкласса.У меня также есть CatDetailsViewController и DogDetailsViewController, которые представляют отдельные экземпляры управляемых объектов.Тогда у меня есть FavoritesViewController, который перечисляет как - кошек и собак в таблице.После касания строки я хочу перевести пользователя в соответствующий контроллер представления CatDetail или DogDetail.Здесь возникает вопрос - могу ли я получить / получить класс контроллера представления из экземпляра управляемого объекта.Я также открыт для других вариантов реализации этого.

1 Ответ

1 голос
/ 26 марта 2012

РЕДАКТИРОВАТЬ (после комментария):

Это полностью соответствует MVC, IMO. Ваш FavoritesViewController отвечает за указание объекта, с которым вы имеете дело, и за вызов соответствующего правильного контроллера (контроллера представления CatDetail или DogDetail). Он по-прежнему содержит знания о бизнес-логике вашего приложения, а модель и представления должным образом отделены от него. Видите ли, в конце концов, между FavoritesViewController и DogsViewController / CatsViewController нет большой разницы; единственное отличие состоит в том, что FavoritesViewController знает о двух типах данных вместо одного.

СТАРЫЙ ОТВЕТ:

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

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

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

...