0
votes

I recently wrote a simple application on Xcode with the intention of learning how to write programs for the iPhone. The program I wrote uses xib files. Since I'm using Xcode5 I deleted the storyboard and aded the xib file. Then, in the Info properties of the project I change the variable "Main storyboard file base name" to "Main nib file base name" and set the value to the name of my xib file. Later, in the File's Owner I set the custom class to QuizViewController (the controller for my xib) and made all the necessary connections (IBAction and IBOutlet).

I don't have any compilation errors but when I execute the project I get the following error

2014-01-20 12:37:17.872 Quiz[1616:70b] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key campoPreguntas.'

I don't understand what this error means.

The code of my QuizViewController.h is this

@interface QuizViewController : UIViewController
{
   int indicePreguntaActual;

   //objetos del modelo
   NSMutableArray *preguntas;
   NSMutableArray *respuestas;

   //objetos de la vista
   IBOutlet UILabel *campoPreguntas;
   IBOutlet UILabel *campoRespuestas;
}

- (IBAction)mostrarPregunta:(id)sender;
- (IBAction)mostrarRespuesta:(id)sender;

@end

And the code for my QuizViewController.m is

#import "QuizViewController.h"

@interface QuizViewController ()

@end

@implementation QuizViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
//llamamos al init implementado en la superclase
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

if (self) {
    //creamos dos arreglos y hacemos que los punteros apunten a ellos
    preguntas = [[NSMutableArray alloc]init];
    respuestas = [[NSMutableArray alloc]init];

    //añadimos las preguntas y respuesas a los arreglos
    [preguntas addObject:@"Cuanto es 7 + 7"];
    [respuestas addObject:@"14"];

    [preguntas addObject:@"Cuanto es 5 + 5"];
    [respuestas addObject:@"10"];

    [preguntas addObject:@"Cuanto es 2 + 2"];
    [respuestas addObject:@"4"];
}

//retornamos la direccion del nuevo objeto
return self;
}

-(IBAction)mostrarPregunta:(id)sender
{
//incrementamos el indice de las preguntas
indicePreguntaActual++;

//verificamos que el indice no sea mayor al tamaño del arreglo y si es igual
//al valor maximo hacemos que el indice valga 0 para iniciar nuevamente
if (indicePreguntaActual == [preguntas count]) {
    indicePreguntaActual = 0;
}

//obtenemos la pregunta en el indice
NSString *pregunta = [preguntas objectAtIndex:indicePreguntaActual];

//mostramos la pregunta en la interfaz
[campoPreguntas setText:pregunta];

//limpiamos el campo respuesta
[campoRespuestas setText:@"???"];

//escribimos la pregunta que se muestra en el log
NSLog(@"mostrando la pregunta: %@",pregunta);
}

-(IBAction)mostrarRespuesta:(id)sender
{
//obtenemos la respuesta
NSString *respuesta = [respuestas objectAtIndex:indicePreguntaActual];

//mostramos la respuesta
[campoRespuestas setText:respuesta];

}

@end

My connections looks like this

Connections

Thanks for your time and your help.

1

1 Answers

0
votes

Its usually because you have something connected in IB that you deleted in the code