4

Я делаю приложение, которое выполняет вычисления.новичок ios - где модель в MVC?

У меня есть куча видов и контроллеров.

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

  1. мнения .. все, что вещи, которые мы делаем с файлом XIb или раскадровки
  2. контроллер .. контроллер вид, что мы начинаем с тем, когда мы делаем ИОС приложение .. мы ссылаемся выходы и действия

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

ответ

7

Модель не то, что приходит стандарт как и все остальные вещи, которые вы упомянули. При создании единого приложения вида в Xcode он поставляется с viewController и appDelegate. Как вы заметили, модель отсутствует.

Это потому, что вы строите свою собственную модель. Модель обычно представляет собой объект, который вы создаете в своем контроллере представления, а затем манипулируете своими данными с помощью своих методов. Модель будет представлять собой файл .h и .m, который вы создаете для создания объекта, который своими методами управляет данными с пользовательского ввода.

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

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

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.myModel = [[Model alloc] init]; 
} 

И ссылка на вашу модель в качестве переменного экземпляра следует поместить в расширении частного класса в верхней части .m файла вашего viewController «ы.

@interface ViewController() 
@property (nonatomic) Model *myModel; 
@end 
+0

в этом я бы не смог получить доступ к методам моей модели, так как это просто создавалось методом viewdidload. Правильно? должен ли я установить свою модель в качестве свойства, чтобы я мог получить к ней доступ повсюду .. или я должен создать экземпляр в зависимости от того, какие методы должны использовать его? – hamobi

+0

совершенно. Вы создаете свойство в своем контроллере viewController, а затем создаете его, когда ваше приложение готово '@property (неатомный) Model * myModel' –

+0

@hamobi на всей вашей программе, вы можете отправлять данные в вашу модель просто путем обмена сообщениями, потому что это имущество. '[model addNumber: self.label1.text andAnotherNumber: self.label2.text];' –

3

Как всегда дизайн до вас. Я бы предложил создать базовую модель данных с любыми требуемыми объектами модели (это создаст вам файлы классов). Знакомство с основными данными на раннем этапе обучения iOS - отличный способ забрать лучшие практики.

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

Удачи вам в разработке iOS.

+1

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

+0

им не остается ничего .. это то, о чем люди говорят, когда говорят о модели в ios развития? в частности, кедрата? – hamobi

+1

Как я уже сказал, ваша модель полностью зависит от вас, а основные данные - отличная структура для использования. Если вы никогда не собираетесь расширять его, чтобы сохранить любые данные, вы можете создать класс. Операции с методами для каждой функции, которую ваш калькулятор может выполнять в методах класса. + (NSInteger) addA: (NSInteger) a ToB: (NSInteger) b; –

0

Ваша математика на самом деле идет в вашем контроллере. Если вы не хотите использовать одни и те же функции для других методов.

Ваша модель будет представлять собой все, что вы хотите сохранить в Core Data или в каком-либо другом постоянном хранилище.

В основном Views разговор с пользовательским интерфейсом, модели в базу данных, а все остальное к контроллерам

+1

Я не согласен. «Модель» MVC не ограничивается основными моделями данных. Чтобы уточнить: View IS UI. Контроллер управляет пользовательским интерфейсом. ВСЕГДА следует извлечь из контроллера и помещать в какой-то другой объект. Агрегация этих других объектов в совокупности упоминается как Модель. –

2

Да, вы должны создать подкласс NSObject и поместить в него свои вычисления.
Да, ваш контроллер должен затем создать объект Model и использовать его для координации представления.

Термин «модель» относится только к совокупности классов, которые вы используете независимо от пользовательского интерфейса. У плохо разработанного приложения может не быть модели вообще. Хорошо спроектированное приложение не позволит своим контроллерам быть загроможденными бизнес-логикой, предоставляя подходящую модель.

Негативное руководство, чтобы ваша модель была очерчена от всего остального, заключается в том, что ваша модель никогда не должна #import <UIKit/UIKit.h>.

Смежные вопросы