2010-01-28 9 views
16

In meiner App verwende ich eine benutzerdefinierte NIB, um meine UITableViewCells zu laden. Der Besitzer der NIB-Datei ist so eingestellt, dass die Klasse mein View-Controller ist. Dann verbinde ich die UITableViewCell mit dem IBOutlet, das ich in die Header-Datei lege. Es war alles gut funktioniert, bis ganz plötzlich es aufgehört zu arbeiten, und wird diesen Fehler:Weird UITableViewCell Loading Exception

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

ich diese Ausnahme verfolgt haben [NSBundle loadNibNamed: Eigentümer: Optionen:]

static NSString *CellIdentifier = @"SubjectCell"; 

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

I habe das auf zwei Geräten und dem Simulator versucht, aber alle bekommen den gleichen Fehler. Ich habe das neue SDK heute heruntergeladen, und ich denke, dass das das verursacht haben könnte.


Bitte beachten Sie:

Diese Frage ist veraltet, und das Update, das unten war eine temporäre Lösung. Apple hat sein SDK korrigiert, wenn Sie also die neueste Version des SDK haben, gilt diese nicht für Sie.

Antwort

26

Gefunden Lösung in dev Foren

diese Dateien erstellen:

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

Es funktioniert einfach! vielen Dank. – Jirapong

+0

Vielen Dank! Es fing an, mich verrückt zu machen !! (Am Ende der .h-Datei fehlt allerdings ein "@end") – nmondollot

+0

Vielen Dank! Das funktioniert! aber warum bricht es bestehende Projekte? – Mugunth

7

Uh oh. Ich habe das gleiche Problem ... Auch mit dem heutigen neuen SDK (28.01.2010). Ich kann nicht sicher sagen, ob der Code vorher funktioniert hat, weil ich ihn gerade NACH dem Update auf das neue SDK hinzugefügt habe.

Wer sonst sieht dieses Problem jetzt? Irgendwelche Lösungen?

Update: Ich habe gerade den Simulator auf SDK 3.2 (ab 3.12) geschaltet, und was weiß ich ... es funktioniert jetzt (im iPhone und iPad Simulator). Es funktioniert jedoch nicht beim Kompilieren mit SDK 3.12.

Meine Vermutung ist, dass IB speichert die XIB in einem neuen Format für 3.2 vielleicht? Kann jemand es im alten (3.12) Format speichern? Das fühlt sich definitiv wie ein Fehler an, da es zuvor funktionierenden Code bricht.

1

hatte ich die gleiche Sache. 3.2 Beta von 3.1.2 installiert und hatte diesen Fehler.

Am Ende hat es behoben: Rebuild gegen Simulator 3.1 und ich habe einen funktionierenden Build im Simulator. Danach funktionieren Builds gegen Simulator 3.1.2.