[Ios] Xcode 6 Error: clase desconocida en el archivo de Interface Builder


Answers

A veces Xcode se perdió customModule="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">
Question

Actualicé a Xcode 6 beta 4 y ahora mi aplicación se cuelga continuamente con el mensaje

Clase desconocida X en el archivo de Interface Builder.

Se cuelga 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 comenzar de cero porque podría estar dañado de alguna manera.

Editar: También me gustaría añadir que traté de limpiar, reiniciar el simulador, jugar con las fases de construcción, etc. Nada de eso funciona.




Me enfrenté al problema cuando porté el guión gráfico del proyecto Swift al proyecto Objective-c, noté la respuesta de vvkuznetsov y resultó que los dos proyectos usaban el mismo identificador. I "Producto -> Limpiar" y pulse la tecla Intro en el campo de texto Módulo y Clase. el problema desapareció




Seleccione su archivo de clase desconocido, abra la pestaña del inspector de archivos, verifique su nombre de Target Membership en Target Membership . Ahí tienes.




Tuve este problema después de agregar un nuevo objetivo, luego creé una nueva clase usando el cuadro de diálogo 'Nuevo archivo' pero accidentalmente no pude verificar el nuevo objetivo así como el objetivo original en el cuadro de diálogo de creación, por lo que el objeto solo se agregó a mi objetivo original. La solución fue eliminar los archivos de origen (eliminar sólo referencia) y luego agregarlos usando 'Agregar archivos', esta vez comprobando ambos objetivos.




Lo que @gfrs dijo es correcto, debe configurar el Módulo. Sin embargo, una vez me encontré con un problema de que mi clase no figuraba en el menú desplegable Class . Finalmente eliminé el archivo rápido, reinicié Xcode y volví a crear el archivo. Finalmente, la clase fue enumerada y podría ser utilizada en Storyboard.

También eche un vistazo a esta respuesta , que parece resolver el problema "real" que encontré.




Esto funcionó para mí ...

Verifique su fuente compilada, ya sea que ese archivo (por ejemplo, ViewController.m) se haya agregado o no, en mi caso no se agregó el archivo ViewController, por lo que me dio el error.




Proyecto con objetivos múltiples

En mi caso, estoy trabajando en Project with Multiple Targets y el problema fue "inherit from Target" (Herencia de Target) sin marcar. Seleccionar "heredar del objetivo" resolvió mi problema




Arreglé esto en la línea de lo que sugirió Laura, pero no necesité recrear los archivos.

Usando XCode 4, en Project Navigator, seleccione el archivo .m que contiene la clase sobre la que se queja.

Vaya a Ver-> Utilidades-> Mostrar inspector de archivos (esto mostrará el Inspector de archivos a la derecha, con esa información .m-file)

Abra la sección Membresía de destino y asegúrese de que su objetivo esté seleccionado para este archivo .m

Cuando agregué mi archivo .m a mi proyecto, no lo agregué a mi objetivo predeterminado por algún motivo y eso me provocó el error que mencionaste.




En mi caso, la clase a la que se hace referencia en Storyboard / xib no tenía el conjunto de Membresía objetivo .

Para solucionarlo, proporcione a los archivos .h y .m esa clase la misma Membresía objetivo que sus otras clases.




Estos pasos funcionan para mí.

1) Borrar datos derivados.
2) Eliminar los archivos .h y .m
3) Crear archivos .h y .m nuevamente




Busqué en Google en todas partes para esto. Ninguna de las respuestas funciona para mí hasta que conocí a 1 amigo que me pidió que moviera la carpeta de mi proyecto al escritorio. Simplemente funcionó automáticamente. Aparentemente si tienes tu carpeta de proyectos en muchas carpetas, XCODE se rompe.




Verifique si su clase tiene la Membresía Target correcta.




A veces, el controlador que está proporcionando pierde su membresía objetivo de la aplicación actual. En ese caso, presionar Enter en el campo "Módulo" no hará nada. Dirígete al controlador y asegúrate de que tenga una membresía objetivo establecida en la aplicación actual.




Lo único que funcionó para mí es en realidad agregar el nombre del módulo al archivo xib ...

Entonces, los archivos xib se ven así:

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

Solución HORRIBLE en mi opinión, pero supuestamente es como Apple quiere que lo hagamos ahora.

Esta pregunta muestra 3 posibles regresos en la versión beta 4 ... aparentemente, Apple no ha sido de mucha ayuda en esta situación, según algunos, porque lo llaman "Funcionando según lo previsto".




Lo arreglé haciendo exactamente lo contrario de lo que ChikabuZ sugirió (gracias por señalarlo, sin embargo). En el archivo del guión gráfico, encuentra esto:

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

y reemplázalo con esto:

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

No puedo creer la cantidad de horas que pierdo al encontrar errores en el compilador Swift y Xcode 6