2012-04-22 7 views
6

estoy trabajando mi camino a través de la caída de Stanford 2011 IOS curso: http://www.stanford.edu/class/cs193p/cgi-bin/drupal/CS193P Tarea 3, Sugerencia n. ° 5: ¿Cuál es el modelo?

Estoy en la asignación # 3: http://www.stanford.edu/class/cs193p/cgi-bin/drupal/system/files/assignments/Assignment%203_2.pdf

A modo de resumen, las asignaciones anteriores han pedido construir una calculadora normal y ahora esto La asignación nos está pidiendo que introduzcamos esta calculadora en un controlador Nav y creemos un paso de ese CalculatorViewController a un GraphViewController que graficaría la función almacenada en el "CalculatorBrain". Este CalculatorBrain fue el modelo para el CalculatorViewController original.

La sugerencia n. ° 5 continúa hablando sobre el hecho de que ahora el modelo para GraphViewController es diferente al modelo de CalculatorViewController y no entiendo qué quiere decir con eso.

La única forma en que he podido construir el nuevo MVC es mediante la creación de un protocolo en el GraphView (vista) del GraphViewController con un objeto llamado "dataSource" de tipo ID. Y luego en el GraphViewController: la adopción de ese protocolo, una instancia del GraphView y el establecimiento de sí mismo como el origen de datos:

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

y luego en el CalculatoViewController original, usando la prepareForSegue para pasar el programa a la GraphViewController:

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

Así que parece funcionar bien. Entonces, si eso funciona, eso significa que el modelo GraphViewController es realmente el Cerebro Calculadora original que específicamente dijo que no es.

Es decir, no es el hecho de que, durante el cambio, estoy asignando a la propiedad calculadora Graphviewcontroller la instancia del modelo de calculadora del CalculatorViewController original y luego usando un protocolo para devolver el valor Y del GraphViewController al medio GraphView que el modelo para el GraphViewController es realmente el modelo original de CalculatorBrain.

+0

No es "¿Cuál es el modelo para este nuevo controlador de vista?" exactamente lo que se te pide que descubras? ¿Qué * * * piensas que debería ser? ¿En qué datos opera el controlador de vista gráfica? – Caleb

+0

@Caleb Gracias. Lo que era realmente confuso es que definí un protocolo (con un método y una propiedad) en la clase GraphView y luego hice que GraphViewController implementara el protocolo (y el método) para que ese método respondiera con el valor Y de la x que se pasa. Esto me molesta porque, en mi opinión, eso me dice que los valores del modelo (de Y) para el GraphVC aún se derivan de la clase principal "CalculatorBrain", que dijo que no es. Tal vez esto sea solo semántica ... ¿Estoy pensando demasiado en esto? – Spectravideo328

Respuesta

3

Creo que el modelo es el "programa", un objeto NSArray. No puede ser la descripción del programa porque no hay una forma fácil de calcular el valor "y" dado un NSString. Tendrá que volver a analizar el NSString en una pila (NSArray). Como tal, ¿no es más directo tener el modelo como un NSArray/programa?

1

odio a responder a esta para usted, ya que eso es lo que se supone que hacer, pero sí creo que está sobre el pensamiento, así que aquí es lo que usted quiere realizar/DO:

Su modelo será una nueva clase que hereda del modelo de la calculadora original. Es por eso que dice que solo necesitará crear la vista y el controlador desde cero. También tendrá que crear una clase de modelo, pero ya existe una gran parte del código necesario en el antiguo modelo de cálculo, por lo que solo debe heredarlo y agregar la funcionalidad adicional necesaria.

Espero que ayude, y me alegro de ver que estás usando esos cursos. ¡Son una gran herramienta gratuita!

+0

Qué tipo de funcionalidad adicional agregaría al modelo heredado. Realmente no hay nada para agregar. GraphView itera a través de x y pregunta desde ... y recupera el valor Y.Y como la vista y el modelo no pueden comunicarse entre sí, esto me dice que sugieres configurar GraphVC para instanciar un Cerebro de Calc (del modelo heredado) pero luego obtener el objeto Calc original pasado a través del MVC de nivel superior. Simplemente parece ser demasiado complejo en comparación con solo que el modelo es solo la fórmula como @Matt. Espero que podamos obtener más comentarios aquí. Gracias – Spectravideo328

1

Luché un poco con esta pregunta también cuando estaba haciendo esa tarea. Llegué a la conclusión (correcta o incorrectamente) de que el modelo es solo una fórmula, que parece ser la conclusión a la que llegaste, que aunque no es la clase cerebral calculadora, está muy relacionada con ella.

edición:

yo sólo he ido hacia atrás y miré el programa de cálculo (estoy actualmente en la asignación de flickr, por lo que no he mirado desde hace tiempo)

Buscando en la calculadora básica, el modelo era un "calculatorbrain" objeto

en las notas de la asignación que dice

no obtiene esta Cont modelo de rodillo confundido con su modelo CalculatorViewController. ELLOS SON DIFERENTES. Y no pienses demasiado en esto. ¡Su nuevo Modelo de Controlador está cerca!

el modelo del controlador graphview que tengo es un programa. Como en el programa tal como se define en calculatorbrain: solo una pila de operaciones (NSArray) en lugar de un calculatorbrain. Acabo de pasar el programa actual a través del cambio al controlador graphview.

Para mí, parece ajustarse a los detalles de la pista: el programa está a mano cuando se pasa al gráfico, pero no es el el mismo que el modelo de la calculadora.

Sin embargo, la sugerencia no dice que no esté relacionada con el modelo.

Pero también soy un poco de iOS n00b, ¡así que esta es solo mi opinión!

1

El modelo debe ser simplemente un NSString que describa el "programa" que va a graficar. ¡Como en el programa que Calculator Brain te devuelve!

id program = [self.dataSource.brain program]; 
+0

esto podría complicarlo demasiado. Tendría que volver a cambiar el NSString a una matriz para poder graficarlo ... – Spectravideo328

1

¡Mi modelo también era el "programa"!

0

@Lee Cjin Pheow, estás en lo cierto. A medida que avanzo en este curso, esto se ha vuelto más aparente. Entonces el modelo es solo un NSArray que sostiene el programa. Creo que mi confusión se debió a una suposición n00b que hice de que el Modelo en un MVC tiene que ser su propia clase/archivo y, por lo tanto, mi búsqueda de una clase/archivo Modelo. A medida que avanzo, veo que el profesor tiene un MVC donde el Modelo es realmente una propiedad, por ejemplo, que está en el Controlador. Solo tengo que mantener el amarillo. No cruce líneas en mi mente simple.

Cuestiones relacionadas