2010-01-28 17 views
16

En mi aplicación, uso un NIB personalizado para cargar mis UITableViewCells. El propietario del archivo NIB está configurado para que la clase sea mi controlador de visualización. Luego enlace el UITableViewCell al IBOutlet que puse en el archivo de encabezado. Era todo funciona bien, hasta que de repente dejó de funcionar, y obtiene este error:Extraño Excepción de carga de UITableViewCell

uncaught exception 'NSInvalidUnarchiveOperationException', reason: '*** -[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (UITableViewCellContentView)' 

he trazado esta excepción a [NSBundle loadNibNamed: Propietario: Opciones:]

static NSString *CellIdentifier = @"SubjectCell"; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
[[NSBundle mainBundle] loadNibNamed:@"SubjectCell" owner:self options:NULL]; 
cell = customSubjectCell; 

I He probado esto en dos dispositivos y en el simulador, pero todos obtienen el mismo error. Descargué el nuevo SDK hoy, y creo que eso puede haber causado esto.


NOTA:

Esta pregunta es obsoleta, y el arreglo de abajo era una solución temporal. Apple ha corregido su SDK, por lo tanto, si tiene la versión más reciente del SDK, este no se aplica a.

Respuesta

26

solución encontrada en los foros dev

Crear estos archivos:

UITableViewCellContentView.h

#import <UIKit/UIKit.h> 
@interface UITableViewCellContentView : UIView { 
} 
@end 

UITableViewCellContentView.m

#include "UITableViewCellContentView.h" 
@implementation UITableViewCellContentView 

+ (id)alloc { 
    return [UIView alloc]; 
} 

+ (id)allocWithZone:(NSZone *)zone { 
    return [UIView allocWithZone:zone]; 
} 

@end 
+1

¡Simplemente funciona! muchas gracias. – Jirapong

+0

¡Muchas gracias! ¡Estaba empezando a volverme loco! (sin embargo, falta un "@end" al final del archivo .h) – nmondollot

+0

¡Muchas gracias! ¡Esto funciona! pero ¿por qué está rompiendo proyectos existentes? – Mugunth

7

Uh oh. Estoy teniendo el mismo problema ... También estoy usando el nuevo SDK de hoy (01/28/2010). No puedo decir con certeza si el código estaba funcionando antes, porque acabo de agregarlo DESPUÉS de actualizar al nuevo SDK.

¿Alguien más está viendo este problema ahora? Alguna solución?

Actualización: Acabo de cambiar el simulador a SDK 3.2 (de 3.12), y qué otra cosa saber ... está funcionando ahora (en el simulador de iPhone y iPad). Sin embargo, no funciona al compilar con SDK 3.12.

Supongo que IB está guardando el XIB en un nuevo formato para 3.2 tal vez? ¿Alguien sabe cómo forzarlo a guardar en el formato antiguo (3.12)? Esto definitivamente se siente como un error, ya que está rompiendo el código que funcionaba anteriormente.

1

que tenía la misma cosa. Instalado 3.2 beta de 3.1.2 y tenía este error.

Al final esto lo solucionó: Reconstruir en el simulador 3.1 y obtuve una versión funcional en el simulador. Después de esto, compila contra el trabajo de Simulator 3.1.2.

Cuestiones relacionadas