639 votes

Xcode 6 Bug : Classe inconnue dans le fichier Interface Builder

J'ai mis à jour vers Xcode 6 beta 4 et maintenant mon application se plante continuellement avec le message suivant

Classe X inconnue dans le fichier d'Interface Builder.

Il se plante parce que Xcode ne trouve pas les classes personnalisées que j'ai liées dans mon Storyboard, mais il montre qu'elles sont liées correctement dans l'interface Xcode.

Je suis sûr que tout est correctement relié. Ma seule autre option est de supprimer tout le fichier du storyboard et de recommencer à zéro, car il pourrait être corrompu d'une manière ou d'une autre.

Edit : Je voudrais également ajouter que j'ai essayé de nettoyer, de réinitialiser le simulateur, de modifier les phases de construction, etc. Rien de tout cela ne fonctionne.

0 votes

Duplicata possible de stackoverflow.com/questions/3416269/

1 votes

@ImreKelényi Vous avez raison. Cela m'est encore arrivé récemment après avoir fait ce que vous venez de décrire.

0 votes

Cela a marché pour moi, stackoverflow.com/questions/1725881/

1511voto

gfrs Points 2380

J'ai résolu ce problème au moment où je tapais la question. Je me suis dit que j'allais répondre à ma question et la laisser ici pour tous ceux qui pourraient rencontrer ce problème en utilisant Xcode 6 beta 4.

Pour résoudre ce problème, vous devez sélectionner chacun de vos objets de classe personnalisés dans Storyboard (cela inclut toutes les vues personnalisées, même les contrôleurs de vue personnalisés eux-mêmes).

Ensuite, une fois ces objets sélectionnés, ouvrez l'inspecteur d'identité et sous "Custom Class", vous devriez voir l'option Module. Cliquez dans la zone de texte Module, puis appuyez sur la touche Entrée.

C'est ça ! Le module actuel pour tous mes objets personnalisés doit avoir été incorrectement défini en interne dans Xcode 6 beta 4. Mais il n'y avait aucune indication visuelle de cela dans l'inspecteur.

Notez que si vous n'arrivez pas à entrer dans la zone de texte Module, essayez de sélectionner la flèche vers la droite et de choisir manuellement votre module actuel, puis effacez la zone de texte et appuyez sur Entrée. Vous pouvez également essayer d'appuyer sur la touche "Entrée" dans la zone de texte "Classe" (bien que ce soit généralement pour résoudre un autre problème).

Voici une image pour rendre les choses plus claires : enter image description here

71 votes

Pour moi, cliquer à l'intérieur de "Module" et appuyer sur la touche "Entrée" ne fonctionnait pas systématiquement, mais sélectionner le champ "Classe" (et appuyer sur la touche "Entrée") faisait toujours l'affaire.

0 votes

J'ai eu cette erreur et il se trouve que c'est parce que j'ai changé le nom de mon application et que tous les modules étaient faux.

1 votes

@itedi bon point, quand j'en aurai l'occasion, je pense que je vais ajouter une section "Causes" et lister tout ce qui, selon les utilisateurs, a causé le problème afin que nous puissions obtenir une liste de ce qui conduit au problème.

73voto

user1760527 Points 21

J'ai eu ce problème après avoir renommé une classe swift. Je l'ai résolu en utilisant la directive @objc :

@objc(ForumTopicListViewController) class ForumTopicListViewController

4 votes

Ça a réglé le problème pour moi, j'avais @objc class X et de passer à @objc(X) class X travaillé.

1 votes

Vous pouvez également essayer de supprimer vos données dérivées, voir stackoverflow.com/questions/24039932/

0 votes

J'ai eu ce problème après avoir renommé la classe ViewController par défaut du modèle de projet Single View. Je me demande quelle magie a été utilisée pour que la classe @objc() n'était pas nécessaire pour la classe ViewController "originale"...

6voto

bouke Points 3328

Ce que @gfrs a dit est correct, vous devez définir le module. Cependant, j'ai rencontré une fois le problème suivant : ma classe n'était pas répertoriée dans la liste des modules de l'API. Class dans le menu déroulant. Finalement, j'ai supprimé le fichier swift, redémarré Xcode et recréé le fichier. Finalement, la classe était listée et pouvait être utilisée dans Storyboard.

Jetez également un coup d'œil à cette réponse qui semble résoudre le "vrai" problème que j'ai rencontré.

0 votes

Supprimer et réinsérer le fichier de classe a fonctionné pour moi. Merci !

2voto

patrickS Points 233

J'ai eu le même problème avec Xcode Version 6.1 (6A1052d). Je pense que le problème apparaît si vous renommez votre App / Projet Xcode.

Ma solution était d'ajouter manuellement le nom du module dans le constructeur d'interface.

1voto

Steven Hernandez Points 437

Ce qui n'a fonctionné que pour moi, c'est d'ajouter le nom du module au fichier xib...

Ainsi, les fichiers xib ressemblent à ceci :

mymodule.MyViewController.xib (Module being the name of the proyect, usually)

Solution HORRIBLE à mon avis, mais c'est censé être la façon dont Apple veut que nous fassions maintenant.

Cette question montre 3 contournements possibles dans la version bêta 4. ... apparemment, Apple n'a pas été très utile dans cette situation selon certains, car ils appellent cela "Working as intended".

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