NSInvalidUnarchiveOperationException: impossible d'instancier la classe nommée NSLayoutConstraint

165

Je suis très nouveau dans ce domaine. J'ai suivi pas à pas le tutoriel d'Apple pour le projet iPhone "HelloWorld". Je l'ai exécuté dans le simulateur iPhone 5.0 et il s'est écrasé:

2012-11-02 14: 46: 06.782 HelloWorld [9880: c07] * Fin de l'application en raison d'une exception non interceptée 'NSInvalidUnarchiveOperationException', raison: 'Impossible d'instancier la classe nommée NSLayoutConstraint' * Première pile d'appels de lancement: (0x14a2052 0xea2d0a 0x144aa78 0x144a9d9 0x32 0x32f6b7 0x23036d 0xd7e2c 0xd83a9 0xd85cb 0x38a73 0x38ce2 0x38ea8 0x3fd9a 0x10be6 0x118a6 0x20743 0x211f8 0x14aa9 0x138cfa9 0x1476161c5 0x13db022 0x13d990a 0x13db022 0x13d990a 0x413d8 (terminaison 0x1)

Quelqu'un peut-il me dire ce qui ne va pas? J'utilise Xcode 4.5.

user1703590
la source
Vous devez désactiver la fonction de mise en page automatique dans xib / storyboard
béryllium

Réponses:

575

Par défaut, lorsque vous créez un nouveau projet iOS dans Xcode 4.5, votre storyboard ou XIB est configuré pour utiliser la mise en page automatique, qui est une nouvelle fonctionnalité d'iOS 6.0. La NSLayoutConstraintclasse fait partie du système Autolayout et n'existe pas dans les anciennes versions d'iOS.

Si vous souhaitez déployer votre application sur une ancienne version d'iOS, vous devez modifier votre storyboard ou XIB pour ne pas utiliser la mise en page automatique. C'est une case à cocher dans l'inspecteur de fichiers:

désactivation de la mise en page automatique

Rob Mayoff
la source
29
J'ai utilisé ScreenFlow pour la capture et le recadrage. J'ai utilisé Photoshop pour transformer le .mov en .gif.
rob mayoff le
Cela vaut aussi pour les xib!
virata
Cela désactive la rotation de la vue du portrait au paysage, même si les méthodes sont implémentées. Comment avez-vous résolu le problème si vous souhaitez toujours que la rotation ait lieu? Merci d'avance, et ... nice gif ^^
aGit
@robmayoff merci pour le gif et la réponse parfaite. mon problème a été résolu en une seconde. :)
ishhhh
J'ai aimé cela alors j'ai créé le mien pour les points d'arrêt d'exception. rsaunders.co.uk/2013/06/add-exception-breakpoint.html
Robert
21

Votre fichier Xib (fichier de générateur d'interface) contient des éléments de mise en page automatique, que iOS 5 ne prend pas en charge.

Dans Xcode, accédez à vos fichiers .xib, et pour chacun d'eux, désactivez la mise en page automatique. Il devrait y avoir une case à cocher sur le côté gauche indiquant "Utiliser la mise en page automatique", décochez-la et réessayez. (C'est sous le premier onglet de l'inspecteur de gauche, lorsque vous avez sélectionné le propriétaire du fichier).

WDUK
la source
8

Je suis tombé sur cette erreur lorsque je travaillais sur un projet plus ancien que je voulais mettre à jour. J'avais coché la case "Utiliser la mise en page automatique" pour commencer à travailler avec des contraintes, mais j'avais oublié de mettre à jour mon paramètre de cible de déploiement vers iOS 6.

jbryant
la source
7

Vous devez l'exécuter dans le simulateur iPhone 6.0. Votre erreur:

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

Suggère que vous utilisez la mise en page automatique, qui ne fonctionne que sur iOS 6.

yeesterbunny
la source