Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios CS193P作业3,提示5-模型是什么?_Ios_Objective C_Model View Controller_Cs193p - Fatal编程技术网

Ios CS193P作业3,提示5-模型是什么?

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的模型与

我正在努力完成斯坦福2011年秋季iOS课程:

我正在执行任务#3:

作为总结,之前的作业要求构建一个常规计算器,现在的作业要求我们将该计算器推送到导航控制器,并创建一个从该计算器ViewController到GraphViewController的分段,该分段将绘制存储在“CalculatorBrain”中的函数。此CalculatorBrain是原始CalculatorViewController的模型

提示#5一直在谈论这样一个事实,即现在GraphViewController的模型与CalculatorViewController的模型不同,我无法理解他的意思

我能够构建新MVC的唯一方法是在GraphViewController的GraphView(视图)中创建一个协议,该协议包含一个ID类型为“dataSource”的对象。然后在GraphViewController中:采用该协议,实例化GraphView并将其自身设置为数据源:

-(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对象。与模型只是公式相比,它似乎过于复杂了