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

要約すると、以前の課題では通常の電卓を作成するように求められていましたが、今回の課題では、この電卓を Nav コントローラーにプッシュし、その CalculatorViewController から "CalculatorBrain" に格納された関数をプロットする GraphViewController へのセグエを作成するよう求められています。この CalculatorBrain は、元の CalculatorViewController のモデルでした。

ヒント 5 は、GraphViewController のモデルが CalculatorViewController のモデルとは異なるという事実について話し続けており、それが何を意味するのか理解できません。

新しい MVC を構築できた唯一の方法は、GraphViewController の GraphView (ビュー) に ID 型の「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 のモデルは、彼が具体的にそうではないと言った元の Calculator Brain であることを意味します。

つまり、セグエ中に、Graphviewcontroller 計算機プロパティに元の CalculatorViewController の計算機モデル インスタンスを割り当て、プロトコルを使用して 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 のモデルと混同しないでください。それらは違う。そして、これを考えすぎないでください。あなたの新しいコントローラーのモデルが間近に迫っています!

私が持っているグラフビューコントローラーのモデルはプログラムです。Calculatorbrain で定義されているプログラムのように、Calculatorbrain ではなく、単なる操作のスタック (NSArray) です。セグエを介して現在のプログラムをグラフビューコントローラーに渡しました。

私には、ヒントの詳細に合っているように思えます。グラフに続くと、プログラムはすぐ近くにありますが、電卓のモデルと同じではありません。

ヒントは、それがモデルに関係していないとは言っていません。

しかし、私も少し iOS 初心者なので、これは私の意見です。

于 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 です。私の混乱は、MVC のモデルは独自のクラス/ファイルでなければならないという n00b の仮定が原因であったため、モデル クラス/ファイルを検索したためだと思います。私が進んでいると、教授が MVC を持っていることがわかります。モデルは実際にはコントローラーにあるたとえば単なるプロパティです。私は単純な心で黄色が一線を越えないように維持しなければなりません。

于 2012-06-03T23:33:08.857 に答える