NSInvalidUnarchiveOperationException: Impossibile creare un'istanza della classe denominata NSLayoutConstraint


165

Sono molto nuovo a questo. Ho seguito il tutorial di Apple passo dopo passo per il progetto iPhone "HelloWorld". L'ho eseguito nel simulatore di iPhone 5.0 e si è bloccato:

02/11/2012 14: 46: 06.782 HelloWorld [9880: c07] * Terminazione dell'app a causa di un'eccezione non rilevata 'NSInvalidUnarchiveOperationException', motivo: 'Impossibile creare un'istanza della classe denominata NSLayoutConstraint' * Stack di chiamata del primo lancio: (0x14a2052 0xea2d0a 0x322f 0x32f 0x32f 0x32f 0x32f 0x32f 0x32f 0x32f 0x32f 0x32f 0x32f 0x32f 0x144ff 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) risolvere chiamato un'eccezione (lldb)

Qualcuno può dirmi cosa è andato storto? Sto usando Xcode 4.5.


Devi disattivare la funzione Autolayout in xib / storyboard
berillio

Risposte:


575

Per impostazione predefinita, quando crei un nuovo progetto iOS in Xcode 4.5, lo storyboard o XIB è impostato per utilizzare Autolayout, che è una nuova funzionalità di iOS 6.0. La NSLayoutConstraintclasse fa parte del sistema Autolayout e non esiste nelle versioni precedenti di iOS.

Se desideri distribuire la tua app su una versione precedente di iOS, devi modificare lo storyboard o XIB per non utilizzare Autolayout. È una casella di controllo in File Inspector:

disattivazione del layout automatico


29
Ho usato ScreenFlow per l'acquisizione e il ritaglio. Ho usato Photoshop per trasformare .mov in .gif.
Rob Mayoff

Questo vale anche per gli xib!
virata

In questo modo si disabilita la rotazione della vista da verticale a orizzontale pur avendo i metodi implementati. Come hai risolto il problema se desideri ancora che avvenga la rotazione? Grazie in anticipo e ... bella gif ^^
aGit

@robmayoff grazie per la gif e la risposta perfetta. il mio problema è stato risolto in un secondo. :)
Ishhhh,

Mi è piaciuto così ho creato il mio per i punti di interruzione delle eccezioni. rsaunders.co.uk/2013/06/add-exception-breakpoint.html
Robert

21

Il tuo file Xib (file del builder Interface) contiene elementi AutoLayout, che iOS 5 non supporta.

In Xcode, vai ai tuoi file .xib e, per ognuno, disattiva AutoLayout. Dovrebbe esserci una casella di controllo sul lato sinistro che dice "Usa AutoLayout", deselezionalo e riprova. (Questo è sotto la prima scheda nella finestra di ispezione a sinistra, quando hai il proprietario del File) selezionato.


8

Mi sono imbattuto in questo errore quando stavo lavorando su un vecchio progetto che volevo aggiornare. Avevo selezionato la casella di controllo "Usa autolayout" per iniziare a lavorare con i vincoli, ma avevo dimenticato di aggiornare l'impostazione di destinazione di distribuzione su iOS 6.


7

Devi eseguirlo nel simulatore di iPhone 6.0. Il tuo errore:

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

Suggerisce di utilizzare il layout automatico, che funziona solo su iOS 6.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.