Ios CS193P作业3,提示5-模型是什么?
我正在努力完成斯坦福2011年秋季iOS课程: 我正在执行任务#3: 作为总结,之前的作业要求构建一个常规计算器,现在的作业要求我们将该计算器推送到导航控制器,并创建一个从该计算器ViewController到GraphViewController的分段,该分段将绘制存储在“CalculatorBrain”中的函数。此CalculatorBrain是原始CalculatorViewController的模型 提示#5一直在谈论这样一个事实,即现在GraphViewController的模型与CalculatorViewController的模型不同,我无法理解他的意思 我能够构建新MVC的唯一方法是在GraphViewController的GraphView(视图)中创建一个协议,该协议包含一个ID类型为“dataSource”的对象。然后在GraphViewController中:采用该协议,实例化GraphView并将其自身设置为数据源:Ios CS193P作业3,提示5-模型是什么?,ios,objective-c,model-view-controller,cs193p,Ios,Objective C,Model View Controller,Cs193p,我正在努力完成斯坦福2011年秋季iOS课程: 我正在执行任务#3: 作为总结,之前的作业要求构建一个常规计算器,现在的作业要求我们将该计算器推送到导航控制器,并创建一个从该计算器ViewController到GraphViewController的分段,该分段将绘制存储在“CalculatorBrain”中的函数。此CalculatorBrain是原始CalculatorViewController的模型 提示#5一直在谈论这样一个事实,即现在GraphViewController的模型与
-(void) setGraphView:(GraphView *)graphView
{
_graphView=graphView;
self.graphView.dataSource=self;
}
然后在原始CalculationViewController中,使用prepareForSegue将程序传递给GraphViewController:
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([segue.identifier isEqualToString:@"Graph"])
{
GraphViewController *myGraphViewController = segue.destinationViewController;
myGraphViewController.myCalculator=self.myCalcBrain;
}
}
所以这似乎很有效。因此,如果这是可行的,那就意味着GraphViewController的模型实际上是原始的计算机大脑,而他明确地说它不是
我的意思是,在赛格期间,我将原始CalculatorViewController中的calculator模型实例分配给Graphviewcontroller calculator属性,然后使用协议将Y值从Graphviewcontroller返回到GraphView,这意味着Graphviewcontroller的模型实际上就是原始CalculatorBrain模型。为你回答这个问题,因为这是你应该做的,但我确实认为你想得太多了,所以以下是他希望你实现/做的: 您的模型将是从原始计算器的模型继承的新类。这就是为什么他说您只需要从头开始创建视图和控制器。您还必须创建一个模型类,但是旧的calc模型中已经存在许多必要的代码,因此您只需继承这些代码并添加必要的附加功能
希望这会有所帮助,并且很高兴看到您正在使用这些课程。他们是一个伟大的免费工具 我在做那项作业时,也曾为这个问题挣扎过一段时间。我得出的结论(正确或错误)是,这个模型只是一个公式——这似乎是你得出的结论,虽然不是计算机大脑类,但与之密切相关 编辑: 我刚刚回去看了我的计算器程序(我目前正在做flickr作业,所以有一段时间没看了) 看看基本的计算器,模型是一个“calculatorbrain”对象 在作业的提示中,它说 不要将此控制器的模型与计算器ViewController的模型混淆。他们是不同的。不要想太多。你的新控制器的型号就在眼前 graphview控制器的模型是一个程序。正如在calculatorbrain中定义的程序中一样-只是一个操作堆栈(NSArray),而不是calculatorbrain。我刚刚通过segue将当前程序传递到graphview控制器 在我看来,它似乎符合提示的细节——当你进入图形时,程序就在手边,但它与计算器的模型不同 但提示并没有说它与模型无关
但我也有点像iOS n00b,所以这只是我的想法 模型应该只是一个描述要绘制的“程序”的字符串。就像计算机大脑返回给你的程序一样
id program = [self.dataSource.brain program];
我的模型是“程序”也 我相信这个模型就是“程序”,一个NSArray对象。它不能是程序的描述,因为在给定NSString的情况下,没有简单的方法来计算“y”值。您必须将NSString重新解析为堆栈(NSArray)。因此,将模型作为NSArray/程序不是更直接吗?@Lee Cjin Pheow,你是对的。随着我在这门课程中的进步,这一点变得更加明显。所以这个模型只是一个保存程序的NSArray。我想我的困惑是因为n00b假设MVC中的模型必须是它自己的类/文件,因此我搜索模型类/文件。随着我的进步,我看到教授有一个MVC,其中模型实际上只是一个属性,例如,位于控制器中的属性。在我简单的头脑中,我只需要保持黄色的“请勿交叉线”。难道“这个新的视图控制器的模型是什么?”不正是我要你弄明白的吗?你认为应该是什么?图形视图控制器操作的是什么数据?@Caleb谢谢。真正令人困惑的是,我在GraphView类中定义了一个协议(带有一个方法和一个属性),然后让GraphView控制器实现该协议(和该方法),让该方法用传递的x的Y值进行回复。这让我很困扰,因为在我看来,这告诉我GraphVC的模型值(Y)仍然是从主“CalculatorBrain”类派生的,他说不是。也许这只是语义……我想得太多了吗?你会在继承的模型中添加什么样的add'l功能。真的没有什么可补充的。GraphView正在x中迭代,并询问。。。得到Y值。由于视图和模型不能相互对话,这告诉我,您建议设置GraphVC来实例化Calc Brain(来自继承的模型),但仍然通过顶级MVC传递原始Calc对象。与模型只是公式相比,它似乎过于复杂了