Error de Xcode 6: clase desconocida en el archivo Interface Builder
Actualicé a Xcode 6 beta 4 y ahora mi aplicación falla continuamente con el mensaje
Clase X desconocida en el archivo Interface Builder.
Se bloquea porque supuestamente Xcode no puede encontrar mis clases personalizadas que he vinculado en mi Storyboard pero muestra que están vinculadas correctamente en la interfaz de Xcode.
Estoy seguro de que todo está vinculado correctamente. Mi única otra opción puede ser eliminar todo el archivo del guión gráfico y empezar desde cero porque podría estar dañado de alguna manera.
Editar: También me gustaría agregar que intenté limpiar, restablecer el simulador, modificar las fases de compilación, etc. Nada de eso funciona.
Resolví este problema mientras escribía la pregunta. Pensé en responder mi pregunta y dejarla aquí para cualquier otra persona que pueda enfrentar este problema al usar Xcode 6 beta 4.
Para resolver este problema, debe seleccionar cada uno de sus objetos de clase personalizados en Storyboard (esto incluye cualquier vista personalizada, incluso los propios controladores de vista personalizados).
Luego, con esos objetos seleccionados, abra el inspector de identidad y en "Clase personalizada" debería ver la opción Módulo. Finalmente:
- Haga clic dentro del cuadro de texto Módulo y presione Intro.
- O (actualización 2022) , marque la opción "Heredar módulo del destino".
¡Eso es todo! El módulo actual para todos mis objetos personalizados debe haber sido configurado internamente incorrectamente de alguna manera en Xcode 6 beta 4. Pero no había ninguna indicación visual de esto en el inspector.
Tenga en cuenta que si presionar Intro dentro del cuadro de texto Módulo no funciona, intente seleccionar la flecha a la derecha y seleccione manualmente su módulo actual, luego borre el cuadro de texto y presione Intro. También puedes intentar presionar Enter dentro del cuadro de texto de la clase (aunque esto generalmente es para resolver un problema diferente).
Aquí tenéis una imagen para que quede más claro:
A veces Xcode se pierdecustomModule="AppName" customModuleProvider="target"
Para solucionarlo, abra el guión gráfico como código fuente y reemplace esta línea:
<viewController storyboardIdentifier="StoryboardId" id="SomeID" customClass="CustomClass"
sceneMemberID="viewController">
a esto:
<viewController storyboardIdentifier="StoryboardId" id="SomeID" customClass="CustomClass"
customModule="AppName" customModuleProvider="target" sceneMemberID="viewController">
Tuve este problema después de cambiar el nombre de una clase rápida. Lo resolvió usando la directiva @objc:
@objc(ForumTopicListViewController) class ForumTopicListViewController