web-dev-qa-db-fra.com

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

Je suis très nouveau pour cela. 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] * Application terminée en raison d'une exception non capturée 'NSInvalidUnarchiveOperationException', raison: 'Impossible d'instancier la classe nommée NSLayoutConstraint' * Première pile d'appel: (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) mettre fin à une exception appelée lancer (LLDB)

Est-ce que quelqu'un peut me dire ce qui ne va pas? J'utilise Xcode 4.5.

161
user1703590

Par défaut, lorsque vous créez un nouveau projet iOS dans Xcode 4.5, votre storyboard ou XIB est configuré pour utiliser Autolayout, une nouvelle fonctionnalité de iOS 6.0. La classe NSLayoutConstraint 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 votre XIB en not utilisez Autolayout. C'est une case à cocher dans l'inspecteur de fichier:

turning off autolayout

574
rob mayoff

Votre fichier Xib (fichier de constructeur d'interface) contient des éléments AutoLayout, qu'iOS 5 ne prend pas pas en charge.

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

21
WDUK

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 Autolayout" pour commencer à travailler avec des contraintes, mais j'avais oublié de mettre à jour mon paramètre Cible de déploiement sur iOS 6.

8
jbryant

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' *

Vous suggère d'utiliser l'autolayout, qui ne fonctionne que sur iOS 6.

7
yeesterbunny