La UITableViewCell personalizada me da: esta class no cumple con la encoding de valores key

En primer lugar, esta discusión no resolvió mi problema.

Subclass UITableViewCell personalizada: esta class no cumple con la encoding de valores key

Preparar:

Tengo una matriz de objects Person en MainViewController . Quiere mostrar los objects en un UITableView en AllContactsViewController .

Problema:

Todo funciona como se espera cuando se usa el UITableViewCell pnetworkingeterminado. Cuando uso mi TableCell personalizado, recibo un error que indica que esta class no cumple con la encoding de valores key.

Este error se produce justo después de conectar CUALQUIERA de mis tres outlets de outlets en IB con mi class TableCell .

Nota:

TableCell tiene tres properties: un name y una label de email + imageView .

Esperanza usted puede ayudar.

TableCell.h

 #import <UIKit/UIKit.h> @interface TableCell : UITableViewCell @property (weak, nonatomic) IBOutlet UILabel *nameLabel; @property (weak, nonatomic) IBOutlet UILabel *emailLabel; @property (weak, nonatomic) IBOutlet UIImageView *imageView; @end 

TableCell.m

 #import "TableCell.h" @implementation TableCell @synthesize nameLabel, imageView, emailLabel; 

AllContactsViewController.m

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *cellIdent = @"TableCell"; TableCell *cell = (TableCell *)[tableView dequeueReusableCellWithIdentifier:cellIdent]; if (cell == nil) { NSArray *array = [[NSBundle mainBundle]loadNibNamed:@"TableCell" owner:self options:nil]; cell = [array objectAtIndex:0]; } NSString *firstAndLastnameString = [NSString stringWithFormat:@"%@ %@", [(NewContact *)[self.allContactsArray objectAtIndex:[indexPath row]] firstName], [(NewContact *)[self.allContactsArray objectAtIndex:[indexPath row]] lastName]]; cell.nameLabel.text = firstAndLastnameString; cell.emailLabel.text = [(NewContact *)[self.allContactsArray objectAtIndex:[indexPath row]] eMail]; cell.imageView.image = [(NewContact *)[self.allContactsArray objectAtIndex:[indexPath row]] contactPicture]; return cell; } 

ACTUALIZAR:

Tal vez una captura de pantalla ayudará a IB.

introduzca la descripción de la imagen aquí

Se agregó AllContactsViewController.h completo.

 #import <UIKit/UIKit.h> #import "VCDelegate.h" #import "TableCell.h" @interface AllContactsViewController : UIViewController <UITableViewDataSource, UITableViewDelegate> @property (weak, nonatomic) id <VCDelegate>delegate; @property (weak, nonatomic) IBOutlet UITableView *allContactsTableView; @property (strong, nonatomic) NSMutableArray *allContactsArray; @property (assign) int currentArrayIndexNumber; - (IBAction)closeBtnTapped:(id)sender; @end 

Si está conectando las salidas del propietario del file, debe hacer lo siguiente:

1: defina la class de UITableViewCell en su class de TableCell:

introduzca la descripción de la imagen aquí

2: conecte las salidas no del propietario del file, sino de TableCell en la list de objects:

Conecte los enchufes

Si está usando Xcode 6 GM, hay un error en IB que puede generar este error. No creo que el OP tuviera este problema porque es más obvio (puede ver una "class no definida MyXXXCell" en el logging), pero debido a que usted obtiene esta pregunta de Google como yo, intente ingresar el nombre de la class en IB y pulsa enter nuevamente y una vez que esté realmente guardado en el file storyboard / xml, estará bien.

Tuve el mismo problema y algunos de los comentarios aquí o en otras discusiones me ayudaron … al final, simplemente cometí una causa limpia, estaba bastante seguro de que estaba haciendo todo correctamente y sí … ¡funcionó mágicamente!

Esto me sucedió justo después de que Git se fusionara y resolviera algunos conflictos. Había arruinado mi proyecto XCode.

Intenté todo sobre el StackOverflow. Al principio pensé que mi file .m de la class Custom no se ha agregado a la list de classs de Fuentes de compilation. Pero es un caso, sin embargo, incluso después de agregarlo, me devolvió el mismo problema.

Cómo resolví:

  1. Guardé una copy de security de mi file .xib y sus files de class personalizada .m y .h de respaldo.
  2. A continuación, limpie el proyecto e intente ejecutar la aplicación a través de XCode (que podría no funcionar)
  3. Luego vuelva a agregar los files al proyecto XCode y funcionará.

¡Aclamaciones!