NSInvalidUnarchiveOperationException: Klasse mit dem Namen NSLayoutConstraint konnte nicht instanziiert werden

165

Ich bin sehr neu in diesem Bereich. Ich habe das Tutorial von Apple Schritt für Schritt für das iPhone-Projekt "HelloWorld" befolgt. Ich habe es im iPhone 5.0 Simulator ausgeführt und es ist abgestürzt:

2012.11.02 14: 46: 06,782 Hello World [9880: c07] * Beenden app aufgrund nicht abgefangene Ausnahme 'NSInvalidUnarchiveOperationException' Grund: 'Kann nicht instantiate Klasse mit dem Namen NSLayoutConstraint' * Erster Wurf Call - Stack: (0x14a2052 0xea2d0a 0x144aa78 0x144a9e9 0x32f7d7 0x32f9af 0x32f6b7 0x23036d 0xd7e2c 0xd83a9 0xd85cb 0x38a73 0x38ce2 0x38ea8 0x3fd9a 0x10be6 0x118a6 0x20743 0x211f8 0x14aa9 0x138cfa9 0x14761c5 0x13db022 0x13d990a 0x13d8db4 0x13d8ccb 0x112a7 0x12a9b 0x1fed 0x1f15 0x1) Auslösen einer Ausnahme (LLDB genannt terminate)

Kann mir bitte jemand sagen, was schief gelaufen ist? Ich benutze Xcode 4.5.

user1703590
quelle
Sie müssen die Autolayout-Funktion in xib / storyboard
beryllium

Antworten:

575

Wenn Sie ein neues iOS-Projekt in Xcode 4.5 erstellen, verwendet Ihr Storyboard oder XIB standardmäßig Autolayout, eine neue Funktion in iOS 6.0. Die NSLayoutConstraintKlasse ist Teil des Autolayout-Systems und in älteren Versionen von iOS nicht vorhanden.

Wenn Sie Ihre App auf einer älteren Version von iOS bereitstellen möchten, müssen Sie Ihr Storyboard oder XIB ändern, um Autolayout nicht zu verwenden. Es ist ein Kontrollkästchen im Dateiinspektor:

Autolayout ausschalten

Rob Mayoff
quelle
29
Ich habe ScreenFlow zum Erfassen und Zuschneiden verwendet. Ich habe Photoshop verwendet, um die .mov in eine .gif zu verwandeln.
Rob Mayoff
Dies gilt auch für xibs!
Virata
Dadurch wird die Ansichtsrotation vom Hoch- zum Querformat deaktiviert, selbst wenn die Methoden implementiert sind. Wie haben Sie das Problem gelöst, wenn die Rotation weiterhin stattfinden soll? Vielen Dank im Voraus und ... schönes
Geschenk
@robmayoff danke für das gif und die perfekte antwort. Mein Problem wurde in einer Sekunde gelöst. :)
ishhhh
Das hat mir gefallen, also habe ich meine eigenen für Ausnahme-Haltepunkte erstellt. rsaunders.co.uk/2013/06/add-exception-breakpoint.html
Robert
21

Ihre Xib-Datei (Interface Builder-Datei) enthält AutoLayout-Elemente, die iOS 5 nicht unterstützt.

Wechseln Sie in Xcode zu Ihren .xib-Dateien, und deaktivieren Sie für jede Datei das AutoLayout. Auf der linken Seite sollte sich ein Kontrollkästchen mit der Aufschrift "AutoLayout verwenden" befinden. Deaktivieren Sie es und versuchen Sie es erneut. (Dies befindet sich unter der ersten Registerkarte im Inspektor auf der linken Seite, wenn Sie den Eigentümer der Datei haben.)

WDUK
quelle
8

Ich bin auf diesen Fehler gestoßen, als ich an einem älteren Projekt arbeitete, das ich aktualisieren wollte. Ich hatte das Kontrollkästchen "Autolayout verwenden" aktiviert, um mit Einschränkungen zu arbeiten, aber vergessen, meine Einstellung für das Bereitstellungsziel auf iOS 6 zu aktualisieren.

jbryant
quelle
7

Sie müssen es im iPhone 6.0 Simulator ausführen. Ihr Fehler:

* Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate class named NSLayoutConstraint' *

Schlägt vor, dass Sie Autolayout verwenden, das nur unter iOS 6 funktioniert.

yeesterbunny
quelle