1309 votes

Cette classe n’est pas valeur de clé de codage compatible pour la clé

J'essaie de relier un UILabel avec un IBOutlet créé dans ma classe. Chaque fois que je créer mon application, il se bloque sur l'étiquette de l'écran avec le message d'erreur "cette classe n'est pas la valeur de la clé de codage conforme pour la clé de XXXX".

Voici le code en SecondView.h.

@interface SecondView : UIViewController {
    IBOutlet UILabel *string;
}

@property (nonatomic, retain) IBOutlet UILabel *string;

@end

Voici le code en SecondView.m (Presque rien dedans à part le code généré automatiquement, que je n'ai pas le coller ici).

@implementation SecondView

@synthesize string;

Dans mon SecondView.xib,

  • l' UILabel est lié avec le Propriétaire du Fichier.
  • la classe du Propriétaire du Fichier est - SecondView.

Alors, quel est le problème ici?

Encore une chose: à chaque fois que je créer une nouvelle application et essayez de lier un UISomething d'un IBOutlet, j'obtiens la même erreur. Est-il un paramètre global qui peut générer l'erreur que j'ai rencontré?


Note de l'éditeur: Le projet que l'habitude d'être ici est maintenant un lien brisé.

1653voto

nuttysimple Points 2821

J'ai eu cette erreur plusieurs fois. Alors que TechZen la réponse est tout à fait raison dans ce cas, une autre cause fréquente est lorsque vous modifiez le nom d'un IBOutlet propriété dans votre .h/.m qui vous avez déjà connecté à Propriétaire du Fichier dans la plume.

À partir de votre plume:

  1. Sélectionnez l'objet de l'IB et aller à la 'Connexions'Inspecteur.
  2. En vertu de 'Référencement des points de vente' assurez-vous que votre objet n'est pas encore raccordé à l'ancien nom de la propriété... si elle l'est, cliquez sur le petit " x " pour supprimer la référence et de construire à nouveau.

1059voto

TechZen Points 52692

J'ai téléchargé votre projet.

L'erreur que vous obtenez est

'NSUnknownKeyException', reason: '[<UIViewController 0x3927310> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key string.'

Elle est causée par l' Second - vue-contrôleur en MainWindow.xib ayant une classe d' UIViewController au lieu de SecondView. Modification de la classe correcte résout le problème.

En passant, c'est une mauvaise pratique d'avoir des noms comme "chaîne" en Objective-C. Elle invite à une exécution de nommage de collision. Éviter même une fois hors de la pratique des apps. Les conflits de noms peut être très difficile à suivre et vous ne voulez pas perdre de temps.

128voto

Gerard Grundy Points 546

J'ai eu ce message d'erreur quand j'essayais de mettre en œuvre une coutume ViewCell pour une table. Lorsque je l'ai souligné-Vue-contrôleur pour la XIB et connecté aux éléments de la CellView l'origine de l'erreur "ce cours n'est pas la valeur de la clé de codage conforme à la clé" une fois que j'ai supprimé ces il s'est débarrassé de l'erreur.

Supprimer les connexions dans l'image ci-dessous. Delete the connections in inspector when File Owner is highlighted

Assurez-vous que vous avez seulement les connexions avec la Vue du Tableau de Cellules. Pour vérifier, cliquez sur la vue de la table de la cellule et dans l'INSPECTEUR de look pour vos connexions.

The connection should be in here when Table View Cell is highlighted

124voto

Steve Rogers Points 1170

J’ai dû supprimer l’app depuis le simulateur/iPhone pour se débarrasser de cette erreur.

68voto

erkanyildiz Points 3340

Si c’est une seule application pour iPhone, pas un universel un, assurez-vous que le champ suivant est vide :

Cibles > Sommaire > iPhone/iPod déploiement Info > Interface principale

Si vous spécifiez un xib là il se bloque.

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