50 votes

cette classe n'est pas conforme au codage de la valeur de la clé pour la vue de la clé

Je suis très novice en xcode... J'ai créé une application (une simple calculatrice) qui fonctionne plutôt bien (sur le simulateur et l'appareil). Lorsque je configure l'interface principale dans le résumé options de Cible J'obtiens l'erreur suivante au démarrage du simulateur :

2012-04-14 12:17:27.123 CalcTest [27550:f803] * Application de clôture due d'une exception non attrapée 'NSUnknownKeyException',

raison : ' [<UIApplication 0x6a14650> setValue:forUndefinedKey:] cette classe n'est pas conforme au codage de la valeur de la clé pour la clé calculatorScreen'.

* Pile du premier appel lancé : (0x12db022 0x18f8cd6 0x12daee1 0xcc2022 0xc33f6b 0xc33edb 0xc4ed50 0x53671a 0x12dcdea 0x12467f1 0x53526e 0x536eb7 0x313ce1 0x313ff8 0x31317f 0x322183 0x322c38 0x316634 0x27fcef5 0x12af195 0x1213ff2 0x12128da 0x1211d84 0x1211c9b 0x312c65 0x314626 0x1bad 0x1b15 0x1) terminate called throwing an exception(lldb)

Pour trouver le problème, j'ai commencé un nouveau projet basé sur la vue.

Exécuter le nouveau projet vide sur le simulateur --> fonctionne,

Mais lorsque j'ai défini l'interface principale, à savoir ViewController, dans le fichier résumé --> le simulateur se plante avec

2012-04-14 12:11:17.492 crash [27494:f803] * Fermeture de l'application en raison d'une erreur de saisie exception 'NSUnknownKeyException', raison :

' [<UIApplication 0x6a6f4b0> setValue:forUndefinedKey:] cette classe n'est pas conforme au codage de la valeur de la clé pour la vue de la clé". * Lancez d'abord la pile d'appels :

(0x13c7022 0x1558cd6 0x13c6ee1 0x9bf022 0x930f6b 0x930edb 0x94bd50 0x23371a 0x13c8dea 0x13327f1 0x23226e 0x233eb7 0x10ce1 0x10ff8 0x1017f 0x1f183 0x1fc38 0x13634 0x12b1ef5 0x139b195 0x12ffff2 0x12fe8da 0x12fdd84 0x12fdc9b 0xfc65 0x11626 0x1d4d 0x1cb5) terminaison appelée lancer une exception

existe-t-il une solution à ce problème ?

91voto

Joseph DeCarlo Points 2093

Si vous avez un contrôle dans votre nib (fichier xib) qui est lié à une propriété (IBOutlet) ou à une méthode (IBAction) dans votre contrôleur de vue, et que vous avez supprimé ou renommé la propriété ou la méthode, le runtime ne peut pas le trouver parce qu'il a été renommé et se bloque donc.

Dans votre cas, vous avez défini la propriété Main Interface du projet sur votre ViewController.nib. C'est un problème car les seules nibs qui devraient être utilisées comme interface principale devraient contenir des UIWindows et le propriétaire du fichier dans cette nib devrait être défini comme l'AppDelegate. La UIWindow de la plume doit être liée à la propriété window du propriétaire du fichier (AppDelegate). Parce que vous avez défini cette propriété avec une nib sans les caractéristiques que le runtime recherchait, il vous donne cette erreur.

La solution consiste à laisser l'interface principale vide, car vous n'avez plus à configurer les UIWindows manuellement.

12voto

pbeaumier Points 100

Je viens d'avoir le même problème et je l'ai résolu en faisant un Control-Clic droit sur les contrôles dans le fichier xib pour voir les références des sorties. Il s'est avéré que certains contrôles faisaient toujours référence à un ancien nom et provoquaient cette erreur.

6voto

Si vous obtenez un message similaire à :

  • Terminer l'application en raison d'une exception non attrapée 'NSUnknownKeyException', raison :

'[ setValue:forUndefinedKey :]: cette classe n'est pas compatible avec le codage de la valeur de la clé

cliquez sur l'ajout (+) dans le coin inférieur gauche de la zone de navigation BreakPoint, choisissez "ajouter un point d'arrêt d'exception", car il se bloque à cause de "NSUnknownKeyException", et optez pour "Tous". Exécutez le programme. Le programme s'arrête à la première exception.

5voto

Diaa Den Points 474

Essayez ceci, sélectionnez le propriétaire du fichier puis cliquez sur l'"Inspecteur de connexion" (en haut du volet de droite), vous verrez toutes les sorties. Cherchez un signe comme celui-ci ( !) vous le trouverez sur le petit cercle qui indique un prise manquante il suffit de la relier correctement ou de retirer la prise.

4voto

Vinay Points 256

Essayez ça,

Allez dans Cible=>Phases de construction=>Compilation des sources

Inclure ensuite 'calculatorScreen.m'.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X