2012-06-18 4 views
30

* Chiusura di applicazione a causa di eccezione non identificata 'NSInvalidUnarchiveOperationException', la ragione: '* - [NSKeyedUnarchiver decodeObjectForKey:]: non può decodificare oggetto della classe (NSLayoutConstraint)'Come posso risolvere NSInvalidUnarchiveOperationException

Ho un molto semplice App

un punto di vista ha un tasto

io controllo Fare clic e trascinato sul pulsante per una seconda vista e selezionato MODAL

Quando ho eseguirlo nel simulatore, tutto funziona

Quando lo eseguo nel mio iPad con iOS 5.1.1, si blocca con l'errore sopra riportato. Non ho idea del perché e non c'è il codice.

+0

Fare riferimento a [http://stackoverflow.com/questions/11198981/presentviewcontroller -crash] [1] [1]: http://stackoverflow.com/questions/11198981/presentviewcontroller-crash –

risposta

79

Si sta verificando perché si utilizza Xcode 4.5 (o in precedenza la versione beta) che utilizza "layout automatico" per impostazione predefinita. Il layout automatico è disponibile solo su iOS 6 in modo da ottenere un errore di runtime su versioni precedenti di iOS.

È possibile risolvere questo aprendo lo Storyboard, aprendo il pannello Utilità, e disabilitando la casella "Usa Autolayout" nella prima scheda/sezione:

enter image description here

Per regolari pennini non Storyboard, selezionate la vista di livello superiore per accedere a questa opzione.

+0

Grazie. Non l'avrei mai trovato. –

+0

@Jignesh: questa è già una risposta ben pubblicizzata, e la tua modifica serve meglio come commento (o anche una risposta in sé) Aggiungerò invece il tuo testo di modifica come commento alla risposta. –

+0

Dalla modifica di Jignesh * "Quando ho risolto il problema, dovevo deselezionare' Usa Autolayout' su 'file pennino 'che mi ha causato problemi" *: "Puoi risolvere questo problema aprendo lo Storyboard o qualsiasi altro file di pennino che causa problemi, aprendo il pannello Utilità e disabilitando la casella di controllo "Usa Autolayout" nella prima scheda/sezione " –

5

In Your Xib-> Identità e tipo -> Interface Builder Documento -> casella di controllo useAutoLayout deselezionare, questa è la caratteristica nuova con iOS6