webentwicklung-frage-antwort-db.com.de

Xcode 4.5 beschädigt XIBs?

ich verwende den neuen Xcode 4.5, ich habe diese Codezeilen auf einigen View-Controller:

DiscoverCell* cell=[table dequeueReusableCellWithIdentifier:@"DiscoverCell"];
if(cell==nil){
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"DiscoverCell" 
                                                 owner:self 
                                               options:nil];
    cell = [nib objectAtIndex:0];
} 

wenn ich die App starte, wird sie ausgelöst: App wird aufgrund einer nicht erfassten Ausnahme "NSInternalInconsistencyException" beendet, Grund: "Die NIB-Daten sind ungültig." Was ist das in der LoadNib-Zeile? ist dieser xcode etwas apfelmüll?

45
Dima

Deaktivieren Sie das Kontrollkästchen "Autolayout verwenden" im Bild unten. Xcode 4.5 aktiviert diese Eigenschaft standardmäßig für die neuen Nib-Dateien, die Sie Ihrem Projekt hinzufügen. Durch Deaktivieren des Kontrollkästchens Autolayout wurde das Problem behoben 

59
aToz

Ich hatte das gleiche Problem und es wurde behoben, indem das Kontrollkästchen "Autolayout verwenden" im Dokumentinspektor unter "Dienstprogramme" deaktiviert wurde.

71
tomgerhardt

Ich hatte gerade dieses Problem und suchte nach einem UIButton, dessen Titelfeld im Attribut-Inspektor auf Attributed festgelegt war. Wenn Sie dies in "Einfach" ändern, wurde das Problem behoben. Wenn ich mich recht erinnere, habe ich diesen Button in der letzten Version von Xcode hinzugefügt und hatte dann auch Probleme damit.

8
Symmetric

Für mich war dies eine Kombination aus dem Kommentar von Jason Coco und der Antwort von tomgerhardt: Meine App zielt auf iOS5, ich habe ein Upgrade auf Xcode 4.5 durchgeführt und eine neue NIB erstellt. In der Standardeinstellung war iOS6 darauf ausgerichtet, was zu einem Absturz führte. Ich habe dies im Dateiinspektorfenster der NIB auf iOS5 gesetzt.

Dann bekam ich einen Compiler-Fehler, der darauf hinwies, dass Use Autolayout für iOS5 nicht unterstützt wurde. Im Dokumentinspektor wurde der Fehler behoben. Das Problem wurde behoben.

6
Asciiom

Ich verwende Xcode 4.5 und iPhone Simulator 5.0 und es war derselbe Fehler, als die erste Tabelle angezeigt wurde. Nach dem Hinweis "Uncheck Autolayout" wurde das Problem behoben, indem die Dokumentenversion auf iOS 5.0 umgestellt wurde. (Storyboard ausgewählt -> Registerkarte "Datei identifizieren" -> Interface Builder-Dokument -> Dokumentversionierung.) Das AutoLayout wurde bereits deaktiviert.

4
Ben

Nach dem Deaktivieren des automatischen Layouts für alle meine .xib-Dateien hatte ich immer noch den Fehler. Dies lag daran, dass ich Text -> Attributed für ein UILabel in einer .xib-Datei verwendet habe.

Nach der Einstellung auf Plain war der Fehler verschwunden.

2
Jasper

Nachdem ich etwa eine Stunde versucht hatte, das herauszufinden, habe ich das Problem herausgefunden. Es ist in der Tat das, was oben beschrieben wurde: Stellen Sie sicher, dass Ihre .xib auf dieselbe Zielversion (in diesem Fall höchstwahrscheinlich <6.0) wie für Ihre Hauptanwendung eingestellt ist, und deaktivieren Sie in den Optionen dafür die Option "Use Autolayout" insbesondere .xib.

Der Grund, warum es im Simulator funktionieren wird, liegt darin, dass auf Ihrem Simulator tatsächlich iOS6 ausgeführt wird. Wenn Sie versuchen, ein Gerät mit einem älteren iOS zu verwenden, wird dieser Fehler angezeigt. Mein Problem war, dass ich eine benutzerdefinierte TableViewCell erstellte, die standardmäßig für iOS 6 vorgesehen war und das Kontrollkästchen "Autolayout verwenden" aktiviert war. Das war der Schuldige für mich.

Hoffentlich kann ich jemanden retten, den Kummer, den ich mit diesem Fehler gemacht habe!

2
CoBrA2168

Der Name nach "loadNibNamed:" muss der Name der Nib-Datei sein (im Projektnavigator auf der linken Seite des Bildschirms). Manchmal schreiben Leute dort 'Zellbezeichner', die von Anfang an in CellForRowAtIndexPath schreiben (statisches NSString ...). .

Kann dein Problem an diesem kleinen Fehler liegen?

0
Vladimir