2012-04-22 3 views
6

Я работаю свой путь через грехопадение Стэнфордского 2011 IOS курс: http://www.stanford.edu/class/cs193p/cgi-bin/drupal/CS193P Assignment 3, Hint # 5 - Какова модель?

Я на уступки # 3: http://www.stanford.edu/class/cs193p/cgi-bin/drupal/system/files/assignments/Assignment%203_2.pdf

В качестве резюме, предыдущие задания было предложено построить регулярный калькулятор и теперь это присваивание просит нас подтолкнуть этот калькулятор к контроллеру Nav и создать segue от этого CalculatorViewController к GraphViewController, который будет строить функцию, хранящуюся в «КалькуляторБране». Этот CalculatorBrain был моделью для исходного калькулятора CalculatorViewController.

Подсказка №5 продолжает говорить о том, что теперь модель для GraphViewController отличается от модели CalculatorViewController, и я не могу понять, что он имеет в виду.

Единственный способ, которым я смог построить новый MVC, - создать протокол в GraphView (представлении) GraphViewController с объектом, называемым «dataSource» идентификатора типа. А потом в GraphViewController: принятие этого протокола, инстанцирования GraphView и заходящего себя в качестве источника данных:

-(void) setGraphView:(GraphView *)graphView 
    { 
    _graphView=graphView; 
    self.graphView.dataSource=self; 
    } 

А потом в оригинальном CalculatoViewController, используя prepareForSegue пройти программу в GraphViewController:

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if([segue.identifier isEqualToString:@"Graph"]) 
    { 
    GraphViewController *myGraphViewController = segue.destinationViewController; 
    myGraphViewController.myCalculator=self.myCalcBrain; 
    } 
} 

Так что это нормально работает. Поэтому, если это работает, это означает, что модель GraphViewController действительно является оригинальным калькулятором Brain, который он специально сказал, что это не так!

Я не имею в виду, что во время segue я присваиваю свойству калькулятора Graphviewcontroller экземпляр модели калькулятора из исходного калькулятора CalculatorViewController, а затем используя протокол, чтобы вернуть значение Y из GraphViewController в средство GraphView что модель для GraphViewController - это действительно оригинальная модель CalculatorBrain.

+0

Не является «Какова модель нового контроллера вида?» точно, что вас просят выяснить? Что ты думаешь, что это должно быть? На каких данных работает контроллер графического представления? – Caleb

+0

@Caleb Спасибо. Что действительно путано, так это то, что я определил протокол (с методом и свойством) в классе GraphView, а затем GraphViewController реализовал протокол (и метод), чтобы этот метод ответил с значением Y передаваемого x. Это беспокоит меня, потому что, на мой взгляд, это говорит о том, что значения модели (Y) для GraphVC все еще получены из основного класса CalculatorBrain, который, по его словам, не является. Может быть, это всего лишь семантика ... Я слишком задумываюсь над этим? – Spectravideo328

ответ

3

Я действительно верю, что модель является «программой», объектом NSArray. Это не может быть описание программы, потому что нет простого способа вычислить значение «y» с учетом NSString. Вам придется повторно разобрать NSString в стек (NSArray). Как таковой, не так ли более прямо иметь модель как NSArray/program?

1

Ненавижу ответить на этот вопрос для вас, так как это то, что вы должны делать, но я думаю, что вы над думая, что это, так вот то, что он хочет, чтобы вы поняли/у:

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

Надеюсь, что это поможет, и рад видеть, что вы используете эти курсы. Это отличный бесплатный инструмент!

+0

Какую дополнительную функциональность вы бы добавили в унаследованную модель. Нечего добавить. GraphView выполняет итерацию через x и запрашивает ... и возвращает значение Y.И поскольку представление и модель не могут разговаривать друг с другом, это говорит мне о том, что вы предлагаете настроить GraphVC для создания Calc Brain (из унаследованной модели), но затем все же получить исходный объект Calc, переданный через MVC верхнего уровня. Это просто кажется слишком сложным по сравнению с тем, что модель - это просто формула @Matt. Надеюсь, мы сможем получить еще несколько отзывов. Спасибо – Spectravideo328

1

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

редактировать:

Я только что вернулся и посмотрел на мой калькулятор программе (я в настоящее время по заданию FLICKR, так не смотрел на нее в то время)

Глядя в основном калькуляторе, модель была «calculatorbrain» объект

в намеках задания он говорит

не понимайте это прод Модель ролика запуталась с вашей моделью CalculatorViewController. ОНИ РАЗНЫЕ. И не переусердствуйте. Ваша новая модель контроллера находится под рукой!

Модель контроллера графического обзора У меня есть программа. Как и в программе, определенной в калькуляторе - просто стек операций (NSArray), а не калькулятор. Я просто передал текущую программу через segue в контроллер графика.

Для меня это похоже на детали подсказки - программа находится под рукой, когда вы переходите к графику, но это не то же самое как модель калькулятора.

Подсказка не говорит, что это не связано с моделью.

Но я тоже немного iOS n00b, так что это только мой прием!

1

Модель должна быть просто NSString, описывающей «программу», которую вы собираетесь на график. Как и в программе, которая возвращает вам калькулятор Brain!

+0

Это может быть слишком сложно. Затем вам нужно будет изменить NSString на массив, чтобы иметь возможность отображать его ... – Spectravideo328

0

@Lee Cjin Pheow, вы в порядке. По мере развития этого курса это стало более очевидным. Таким образом, модель - это просто NSArray, поддерживающий программу. Я думаю, что моя путаница была из-за предположения n00b, которое я сделал, что модель в MVC должна быть ее собственным классом/файлом и, следовательно, моим поиском для класса/файла модели. Поскольку я прогрессирую, я вижу, что у профессора есть MVC, где Модель действительно просто свойство, например, которое сидит в Контроллере. Мне просто нужно, чтобы Желтый не пересекал линии в моем простом уме.