6

我正在学习斯坦福 2011 年秋季 iOS 课程: http: //www.stanford.edu/class/cs193p/cgi-bin/drupal/

我正在分配#3: http: //www.stanford.edu/class/cs193p/cgi-bin/drupal/system/files/assignments/Assignment%203_2.pdf

总而言之,之前的任务要求构建一个常规计算器,现在这个任务要求我们将此计算器推送到导航控制器并创建从 CalculatorViewController 到 GraphViewController 的 segue,该连接将绘制存储在“CalculatorBrain”中的函数。这个 CalculatorBrain 是原始 CalculatorViewController 的模型。

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

我能够构建新 MVC 的唯一方法是在 GraphViewController 的 GraphView(视图)中创建一个协议,其中包含一个名为“dataSource”类型 ID 的对象。然后在 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 的模型真的是他特别说的不是的原始计算器大脑!

我的意思是,在 segue 期间,我将来自原始 CalculatorViewController 的计算器模型实例分配给 Graphviewcontroller 计算器属性,然后使用协议将 Y 值从 GraphViewController 返回到 GraphView 意味着该模型GraphViewController 实际上只是原始的 CalculatorBrain 模型。

4

6 回答 6

3

我确实相信模型是“程序”,一个 NSArray 对象。它不能是程序的描述,因为没有简单的方法来计算给定 NSString 的“y”值。您必须将 NSString 重新解析为堆栈(NSArray)。因此,将模型作为 NSArray/程序不是更直接吗?

于 2012-05-24T06:00:07.600 回答
1

我不想为你回答这个问题,因为这是你应该做的,但我相信你想多了,所以这就是他想让你意识到/做的事情:

您的模型将是一个新类,它继承自原始计算器的模型。这就是为什么他说你只需要从头开始创建视图和控制器。您还必须创建一个模型类,但许多必要的代码已经存在于旧的 calc 模型中,因此您只需继承它并添加必要的附加功能。

希望对您有所帮助,并且很高兴看到您正在使用这些课程。它们是一个很棒的免费工具!

于 2012-04-27T16:45:42.147 回答
1

当我做那个任务的时候,我也为这个问题有点挣扎。我得出的结论(正确或错误)模型只是一个公式 - 这似乎是您得出的结论,虽然不是计算器大脑类,但与它密切相关!

编辑:

我刚刚回去查看了我的计算器程序(我目前正在做 flickr 作业,所以有一段时间没看它了)

查看基本计算器,模型是一个“calculatorbrain”对象

在作业的提示中它说

不要将此控制器的模型与您的 CalculatorViewController 的模型混淆。它们是不同的。不要过度思考这一点。您的新控制器模型近在咫尺!

我拥有的graphview控制器模型是一个程序。正如在calculatorbrain 中定义的程序一样——只是一个操作堆栈(NSArray)而不是calculatorbrain。我刚刚通过 segue 将当前程序传递到 graphview 控制器。

对我来说,它似乎符合提示的细节 - 当您查看图表时,程序就在手边,但它计算器的模型不同。

提示并没有说它与模型无关。

但我也有点像 iOS n00b,所以这只是我的看法!

于 2012-04-28T20:45:41.473 回答
1

该模型应该只是一个 NSString 描述您要绘制的“程序”。就像在计算器大脑返回给您的程序中一样!

id program = [self.dataSource.brain program];
于 2012-04-29T08:12:31.293 回答
1

我的模型也是“程序”!

于 2012-05-17T20:18:59.967 回答
0

@Lee Cjin Pheow,你是对的。随着我在这门课程中的进步,这一点变得更加明显。所以模型只是一个保存程序的 NSArray。我认为我的困惑是因为我做了一个 n00b 假设,即 MVC 中的模型必须是它自己的类/文件,因此我搜索了一个模型类/文件。随着我的进步,我看到教授有一个 MVC,其中模型实际上只是一个属性,例如,它位于控制器中。我只需要在我简单的头脑中保持黄色不要越线。

于 2012-06-03T23:33:08.857 回答