Unknown class in Interface Builder file [Résolu]

Salut à tous, comme la plupart d’entre vous j’ai suivi la keynote hier soir et j’ai donc installé la version définitive de Xcode 10 ce matin. Tout allait bien jusqu’à ce que je décide de tester mon appli sur un simulateur (mais le problème est le même sur un vrai appareil). Lors du lancement de l’application, après le launchscreen et le lancement du app delegate, l’appli crash et je vois dans les logs :

2018-09-13 18:21:12.240587+0200 Sésame[4121:55293] Unknown class _TtC7Sésame32_TtC7Sésame18HomeViewController in Interface Builder file.
2018-09-13 18:21:15.009195+0200 Sésame[4121:55293] Unknown class _TtC7Sésame12safetyButton in Interface Builder file.
2018-09-13 18:21:15.041520+0200 Sésame[4121:55293] Unknown class _TtC7Sésame9safetyBox in Interface Builder file.
2018-09-13 18:21:15.041829+0200 Sésame[4121:55293] Unknown class _TtC7Sésame11safetyInput in Interface Builder file.
2018-09-13 18:21:15.452312+0200 Sésame[4121:55293] Unknown class _TtC7Sésame10TitleLabel in Interface Builder file.
2018-09-13 18:21:15.678892+0200 Sésame[4121:55293] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIViewController 0x7fe59dd0f9f0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key cs_errorHeight.'

Et depuis ce matin malgrès nombre de recherches, il m’est impossible de régler ce problème.
J’ai testé :

  • Vider les caches d’xCode
  • Redémarrer xCode, le mac, etc…
  • Nettoyer le projet xCode
  • Désinstaller/Réinstaller les pods
  • Cocher/Décocher « Inherit Module From Target »
    42
  • Supprimer les fichiers du projet puis les réajouter
  • Recréer de nouveaux fichiers de classe avec des nouveaux noms

Voila les principaux tests éfféctués mais rien ne marche … Autant dire que je commence à désesperer :frowning:
C’est pourquoi je fais appelle à votre aide aujourd’hui, avez-vous déja rencontré ce problème ? Si oui, était-ce avec Xcode 10 ? Et surtout comment résoudre ça ?

Je viens également de tester de créer un nouveau storyboard mais la même erreur persiste toujours !

Salut @romain.penchenat,

Regarde si c’est peut être une erreur de contrainte, quand j’ai vu le mot “cs_errorHeight” je me suis dit que “cs” voulai peut être dire constraint, “height” peut être un raport avec une hauteur, et peut être que ce “cs_errorHeight” veut dire qu’il n’arrive pas a calculer une contrainte, peut être que la contrainte et de valeur négative ou je ne sais quoi d’autre.

Ca n’a peut être absolument rien a voir mais je tenai à te faire part de mes suggestions.

En effet c’est une contrainte mais le problème ne vient pas de la. Enfaite c’est comme si mes fichiers de classe n’étaient pas reconnus, n’étaient pas ajouté au projet lorsqu’il est envoyé sur l’appareil. Mais toutes les contraintes sont bonnes, tout les liens outlet aussi.

As tu bien vérifier si tous tes fichier etait bien inclu dans la bonne target ? Pour vérifier ouvre le volet de droite (inspector) -> Premier onglet (en forme de document) -> Target Membership

Oui j’ai également vérifié et c’est bien ça le problème …
Est-ce que vous savez si les build settings etc… sont enregistrés dans les commit Git ? Car je me demande si ça ne viendrait pas de la après tout.

Sauf erreur de ma part il ne me semble pas que les builds settings soit gerer par le source control.

Pour essaye d’isoler le problème essye peut être de créé un nouveau ViewController vide dans ton storyboard (san class non plus) et tu le definit comme point d’entré de ton app pour voir si l’app se lance.

Ca ressemble beaucoup à un outlet qui n’arrive plus à se connecter. Vérifie que la variable cs_errorHeight est toujours présente dans le fichier swift de ton contrôleur, que son nom n’a pas changé du tout et qu’elle a toujours les attributs habituels (@IBOutlet, etc.).

Une autre possibilité serait que le fichier Swift ne soit plus associé à l’écran conçu sur le storyboard. Dans ton Storyboard, sélectionne ton contrôleur, va dans l’onglet identité de l’inspecteur et vérifie que le nom de ta classe est bien sélectionné. Enlève le et remet le si il faut.

J’ai vérifié et revérifié, rien ne change. J’ai même créée une nouvelle classe, puis sélectionné mon ViewController et je lui ai appliqué la nouvelle classe et ai refait des nouveaux liens etc… mais rien ne change. Même si je remonte dans mes commits avec Git jusqu’à il y a plusieurs semaines, la même erreur se produit au lancement de l’appli.
Je vais essayer de “réinitialiser” tout les build settings etc… car je ne vois pas d’autres endroits d’ou ça peut venir …
Je viens même d’essayer d’ouvrir l’application sur un autre view controller mais exactement le même type d’erreur s’affiche :confused:

En réouvrant le projet sur Xcode 9.4.1 et via Git en revenant à la version sans swift 4.2, ça fonctionne tout à fait normalement. L’app se lance, les différentes classes se chargent etc…
Cependant même en ouvrant cette version fonctionnelle sous Xcode 9.4.1, lorsque je l’ouvre sur Xcode 10 donc en ne faisant aucunes modifications, le bug décrit au départ de ce post se produit.
C’est vraiment assez effrayant, je vais continuer Xcode 9.4.1 en attendant la maj sur l’app store et surtout en espérant que ce bug ne réapparraise pas :confused:
Si vous avez des idées, je suis malgré tout encore preneur !

Effectivement vu ce tu décris c’est probablement un bug de XCode.
Tu devrais le poster ici : https://developer.apple.com/bug-reporting/
Est-ce que tu as essayé de modifier la version de compatibilité du fichier storyboard ? Tu peux le faire dans l’inspecteur de fichier une fois que tu es dans un storyboard

Ok, je vais aller reporter ça.
En ce qui concerne la version de compatibilité du fichier storyboard, je crois que tu as pointé le doigt au bon endroit. En effet lorsque je le passe à “Xcode 10.0” et que je lance le build de l’application, ça revient à “Latest Xcode 9.0” tout seul. Donc le bug est probablement dans le coin mais ça ne règle pas mon soucis pour l’instant :joy:
Merci beaucoup d’avoir pris le temps d’essayer de me sauver :wink:

Et du coup t’a trouver une solution au problème ?

Non pour l’instant je suis retourné sur Xcode 9.4.1 et j’ai reporté le bug à Apple. Et puis j’espère ne pas rerencontrer le soucis quand Xcode sur l’appStore passera en version 10.0 …

J’espère que ton souci ce reglera au plus tôt car j’ai lu quelque part qu’apple forcerai les dev a compiler leur app avec xcode 10 à partir de Mars 2019.

Tien nous au courant :slight_smile:

Salut ,

Je vien d’avoir pas mal de pépin avec mon appli sur xcode 10 et après de nombreuses heures de recherche j’ai appris que xcode 10 utilisai un nouveau build system qui améliore la compilation (écrit totalement en swift pour info ) et du coup j’avai de gros souci mais en repassant sur l’encien build System les problèmes on disparu et je me demandai que se serai peut être le cas pour toi.

Donc pour le désactiver c’est très simple , il faut aller dans file -> workspace settings. Dans la section Per User Build Setting -> Build Setting sur Legacy Build system.

En esperant avancé un peu. :slight_smile:

2 « J'aime »

Excellent, vraiment un grand merci à toi !
Après avoir fait la maj de l’AppStore en 10.0 et avoir vu que ça ne fonctionnait pas, j’partais dans le désespoir et tu es tombé à pic !
Ça fonctionne nickel, le nouvel algo de Xcode 10.0 doit encore être un peu bugué.

2 « J'aime »

Ah sa c’est une bonne nouvelle :slight_smile:, bon courage pour la suite de ton projet.

Le legacy build system a résolu mon problème cependant j’ai réessayé avec Xcode 11 de compiler avec le nouveau build system (pour utiliser Catalyst notamment) mais cela ne fonctionne toujours pas…
Après de nombreuses recherches sur internet, je n’ai malheureusement trouvé personne ayant le même problème que moi, c’est vraiment très étonnant.
Savez-vous comment puis je contacter Apple ou quelqu’un de qualifier à ce type de problème venant du build system (un bug report.a déjà été effectué) ?
Merci