iPhone MVC.Проблемы с моделью - PullRequest
       14

iPhone MVC.Проблемы с моделью

4 голосов
/ 08 сентября 2010

Я новичок в программировании, в частности, в прикладных программах для iphone.Прочитав кучу статей о MVC, я решил попробовать в небольшом приложении.Насколько я понимаю, MVC работает так:

Модель: данные, манипулирование данными, получение данных.ViewController: форматирует данные из модели (NSDate для определенного стиля) и т. Д. Вид: фактический интерфейс.

Если это действительно правильная формулировка базовой теории MVC, моя путаница заключается в том, как данные передаются междуМодель, ВК и вид.Пример: если я звоню в твиттер и получаю данные в модели, как (правильно) передать эту информацию в ВК для дальнейшей работы.Я знаю, что между VC и View в основном используется IBOutlets.Модель - это моя настоящая проблема.

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

Я читал о методах делегирования, singleton, NSNotification (которые я использовал для вызова методов в других классах).Проблема в том, что я не совсем понимаю, как использовать эти методы для передачи данных из модели в другие представления.

Пожалуйста, дайте мне знать, если мой вопрос неясен.

Ответы [ 2 ]

3 голосов
/ 08 сентября 2010

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

Итак, в вашем примере вы могли бы иметь объект twitter, который, возможно, хранит информацию и твиты от пользователя.Вы должны создать этот класс со всеми его функциями отдельно в своих собственных файлах .h и .m.Затем в вашем контроллере представления создайте экземпляр класса twitter с полученными данными и начните использовать его из контроллера представления.

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

1 голос
/ 08 сентября 2010

Контроль над приложением находится в контроллере, поэтому именно этот объект будет извлекать или сохранять постоянные данные, обновлять представления этими данными и обрабатывать различные события.Считайте это связующим звеном между моделью и представлением!

Например, если бы вы щелкнули по кнопке, чтобы открыть новый модальный вид, вы бы обработали это событие в своем контроллере представления.В методе, который отвечает на нажатую кнопку, вы создадите или получите доступ к новому контроллеру представления и представите его, используя presentModalViewController: animated :.Если этому новому представлению и контроллеру нужны данные, к которым у вашего текущего контроллера есть доступ, вы можете установить свойство в новом контроллере для ссылки на объект.

...