Question Bug Xcode 6: classe inconnue dans le fichier Interface Builder


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

Classe X inconnue dans le fichier Interface Builder.

Il se bloque parce que Xcode ne peut pas trouver mes classes personnalisées que j'ai liées dans mon Storyboard, mais il montre qu'elles sont correctement liées à l'interface Xcode.

Je suis positif que tout est lié correctement. Ma seule autre option peut être de supprimer tout le fichier de storyboard et de commencer à zéro, car il pourrait être corrompu en quelque sorte.

Edit: Je voudrais aussi ajouter que j'ai essayé de nettoyer, de simuler la remise à zéro, de jouer avec des phases de construction, etc. Rien de tout cela ne fonctionne.


514
2017-07-24 04:09


origine


Réponses:


J'ai résolu ce problème en tapant la question. Je me suis dit que je répondrais à ma question et que je la laisserai ici pour tous ceux qui pourraient être confrontés à ce problème lors de l'utilisation de 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 tous les affichages personnalisés, même les contrôleurs d'affichage personnalisés eux-mêmes).

Ensuite, avec 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 et appuyez sur Entrée.

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

Notez que si vous appuyez sur Entrée dans la zone de texte Module, cela ne fonctionne pas, essayez de sélectionner la flèche vers la droite et sélectionnez manuellement votre module actuel, puis effacez la zone de texte et appuyez sur Entrée. Vous pouvez également essayer d'appuyer sur Entrée dans la zone de texte de la classe (bien que ce soit généralement pour résoudre un problème différent).

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


1279
2017-07-24 04:09



Parfois Xcode manqué customModule="AppName" customModuleProvider="target" 

Pour le réparer, ouvrez le storyboard comme code source et remplacez cette ligne:

<viewController storyboardIdentifier="StoryboardId" id="SomeID" customClass="CustomClass"
sceneMemberID="viewController">

pour ça:

<viewController storyboardIdentifier="StoryboardId" id="SomeID" customClass="CustomClass"
 customModule="AppName" customModuleProvider="target" sceneMemberID="viewController">

92
2017-11-30 16:04



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

@objc(ForumTopicListViewController) class ForumTopicListViewController

65
2017-09-29 20:47



Cela a fonctionné pour moi ..

Vérifiez votre source compilée, si ce fichier (par exemple, ViewController.m) est ajouté ou non, dans mon cas, le fichier ViewController n'a pas été ajouté, donc il me donnait l'erreur.

enter image description here


51
2018-04-06 09:46



Cela peut arriver dans n'importe quel Xcode au-dessus de 6.0. Cela m'est arrivé après avoir renommé certaines classes de ViewController dans le projet Swift (mais je suppose que cela arrivera également avec Obj-C). Il vous suffit d'ouvrir le générateur d'interface, accédez à Identity Inspector of ViewController dont la classe a été renommée, sélectionnez class et appuyez sur Entrée. Cela réattribue la classe renommée à ViewController sélectionné et réinitialise également la valeur du module qui est perdue après avoir renommé la classe.

Mise à jour pour Xcode 8.1 (probablement aussi 8.0):

Xcode 8.1 vient de tomber en panne. Tout simplement et agaçant juste des accidents et n'imprime rien. Je poursuivais ce crash fantôme pendant une heure juste pour découvrir que c'était la même chose - une classe non assignée dans IB. Si vous obtenez des plantages fantômes, vérifiez d'abord IB pour les classes non assignées.


42
2018-01-08 15:02



Parfois, le contrôleur que vous fournissez perd son appartenance cible de l'application en cours. Dans ce cas, appuyer sur Entrée dans le champ "Module" ne fera rien. Accédez au contrôleur et assurez-vous que l'appartenance cible est définie sur l'application en cours.


31
2017-12-31 21:02



Ma réponse: définir un module personnalisé égal au nom de Pod personnalisé (dans mon exemple - nom de classe personnalisé) comme sur la capture d'écran ci-joint

Cette solution est pour cas spécifique: pour la coutume vues cours de Cosse (ou Carthage) cadre.

Infrastructure: XCode8, Swift3

enter image description here


22
2018-03-13 06:08



Projet avec plusieurs cibles

Dans mon cas, je travaille sur le projet avec plusieurs cibles et le problème était "hériter de la cible" n'a pas été cochée. Sélectionner "hériter de la cible" a résolu mon problème

enter image description here


21
2017-11-08 05:43