Actualicé a Xcode 6 beta 4 y ahora mi aplicación se bloquea continuamente con el mensaje
Clase X desconocida en el archivo de 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 comenzar desde cero porque podría estar dañado de alguna manera.
Editar: También me gustaría agregar que intenté limpiar, restablecer el simulador, jugar con las fases de construcción, etc. Nada de eso funciona.
ios
xcode
xcode6
interface-builder
uistoryboard
Byte épico
fuente
fuente
Respuestas:
Resolví este problema mientras escribía la pregunta. Pensé que respondería a mi pregunta y la dejaría 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. Haga clic dentro del cuadro de texto Módulo y presione Entrar.
¡Eso es! El módulo actual para todos mis objetos personalizados debe haberse 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 Entrar. También puede intentar presionar enter dentro del cuadro de texto de la clase (aunque esto generalmente es para resolver un problema diferente).
Aquí hay una imagen para aclarar las cosas:
fuente
@objc(...)
a una de mis clases Swift.A veces se perdió Xcode
customModule="AppName" customModuleProvider="target"
Para solucionarlo, abra el guión gráfico como código fuente y reemplace esta línea:
a esto:
fuente
customModuleProvider
, luego el error desapareció.customModuleProvider
también lo hizo por mí, ¡gracias!Tuve este problema después de cambiar el nombre de una clase rápida. Lo resolvió usando la directiva @objc:
fuente
@objc class X
y cambié a@objc(X) class X
trabajar.@objc()
directiva no fuera necesaria para la clase ViewController 'original' ...Proyecto con múltiples objetivos
En mi caso, estoy trabajando en un proyecto con múltiples objetivos y el problema era "heredar de Target" no estaba marcado. Seleccionar "heredar del objetivo" resolvió mi problema
fuente
Esto funcionó para mí ...
Verifique su fuente compilada, si ese archivo (p. Ej., ViewController.m) está agregado o no, en mi caso el archivo ViewController no fue agregado por lo que me estaba dando el error.
fuente
Compile Sources
. Esta es realmente la solución correcta (y única) para algunos.Esto puede suceder en cualquier Xcode superior a 6.0. Me sucedió después de renombrar algunas clases de ViewController en el proyecto Swift (pero supongo que también sucederá con Obj-C). Solo tiene que abrir el generador de interfaces, vaya al Inspector de identidad de ViewController que cambió el nombre de su clase, seleccione la clase y presione Entrar. Eso reasignará la clase renombrada al ViewController seleccionado y también restablecerá el valor del módulo que se pierde después de cambiar el nombre de la clase.
Actualización para Xcode 8.1 (probablemente 8.0 también):
Xcode 8.1 simplemente se bloquea. Simplemente y molestamente se bloquea y no imprime nada. Estuve persiguiendo ese accidente fantasma durante una hora solo para descubrir que era exactamente lo mismo: clase no asignada en IB. Si obtiene algunos bloqueos fantasmas, primero verifique IB para las clases no asignadas.
fuente
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. Vaya al controlador y asegúrese de que tenga la membresía objetivo establecida en la aplicación actual.
fuente
La habilitación
Inherit Module From Target
tomó el módulo de destino correcto. Eso resolvió el problema.fuente
Mi respuesta: configurar el módulo personalizado igual al nombre de Pod personalizado (en mi ejemplo, nombre de clase personalizado) como en la captura de pantalla adjunta
Esta solución es para un caso específico : para vistas personalizadas clases de de Pod (o Carthage marco ).
Infraestructura: XCode8, Swift3
fuente
Lo arreglé haciendo exactamente lo contrario de lo que sugirió ChikabuZ (aunque gracias por señalarlo). En el archivo del guión gráfico, encuentre esto:
y reemplazarlo con esto:
No puedo creer cuántas horas estoy perdiendo para evitar errores en el compilador Swift y Xcode 6
fuente
Seleccionando el apropiado
Module
para miCustom Class
resolví este problema.Aquí está :
fuente
Me enfrenté a este problema en Xcode 8 , para resolverlo tuve que modificar el guión gráfico en el editor de texto.
En general, busque su control y elimine
customModule
ycustomModuleProvider
de la entidad de control.Hizo un truco para mí.
fuente
Yo tuve el mismo problema.
En mi caso, Xcode no estaba agregando mi clase personalizada a: Target> Build Phase> Compile Sources.
Por lo tanto, le recomiendo verificar si su CustomClass.m está allí.
Espero que esto te ayude.
fuente
Enfrenté este problema en Xcode 6.1 cuando eliminé
Main.storyboard
elLaunchScreen.xib
archivo y lasViewController
clases predeterminadas de mi proyecto.Lo arreglé eliminando las entradas
Launch Screen File
yMain Interface
deInfo.plist
fuente
Verifique si su clase tiene la Membresía Target correcta .
fuente
Busqué en Google por todas partes para esto. Ninguna de las respuestas me funcionó hasta que conocí a un tipo que me pidió que moviera mi carpeta de proyecto al escritorio. Simplemente funcionó automáticamente. Aparentemente, si tiene su carpeta de proyecto en profundidad en muchas carpetas, XCODE realmente se rompe.
fuente
Estos pasos me funcionan.
1) Borrar datos derivados.
2) Eliminar archivos .h y .m
3) Crear archivos .h y .m nuevamente
fuente
Resolví esto abriendo mi archivo de guión gráfico como código fuente y usando el comando-F para buscar mi clase desconocida y eliminar la clase personalizada asociada a ella.
fuente
Lo que @gfrs dijo que es correcto, debe configurar el Módulo. Sin embargo, una vez me encontré con un problema de que mi clase no figuraba en el
Class
menú desplegable. Finalmente, eliminé el archivo swift, reinicié Xcode y volví a crear el archivo. Finalmente la clase fue listada y podría usarse en Storyboard.También eche un vistazo a esta respuesta , que parece resolver el problema 'real' que encontré.
fuente
Resolví este problema escribiendo el nombre del módulo (desafortunadamente, la lista desplegable no mostrará nada ...) en la clase personalizada del inspector de identidad para todos los controles de vista y vistas.
También es posible que deba indicar el proveedor objetivo. Para lograr este objetivo, puede abrir el guión gráfico en modo de código fuente y agregar el atributo "customModuleProvider" tanto en ViewController como en Ver paréntesis angulares.
fuente
Mi solución (Xcode 8.1 Swift 3.0):
Clase desconocida xxx en el archivo Interface Builder.
Abra StoryBoard como código fuente y busque xxx . Eliminar el atributo que contiene el valor xxx . Construye y corre.
fuente
customModule="" customModuleProvider=""
En mi caso, he añadido un indicador
-ObjC
deOther Linker Flags
en la configuración del proyecto para hacer que funcione. También lo intenté con-all_load
flag y funcionó bien también.fuente
En mi caso, la clase a la que se hace referencia en Storyboard / xib no tenía establecida la Membresía de destino .
Para solucionarlo, otorgue a esa clase
.h
y.m
archivos la misma Membresía de destino que sus otras clases.fuente
Mi solución fue eliminar @objc de la definición de clase personalizada.
fuente
Enfrenté el problema cuando porté el guión gráfico del proyecto Swift al proyecto Objective-c, notando la respuesta de vvkuznetsov , resultó que los dos proyectos usaban el mismo identificador. I "Producto -> Limpiar" y presiono la tecla Enter en el campo de texto Módulo y Clase. El problema desapareció.
fuente
Arreglé esto siguiendo las líneas de lo que sugirió Laura, pero no necesitaba volver a crear los archivos.
Usando XCode 4, en el Navegador de proyectos, seleccione el archivo .m que contiene la clase de 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 de archivo .m)
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, por alguna razón no lo agregó a mi destino predeterminado y eso me provocó el error que mencionó.
fuente
Mi problema fue un error del usuario. Tenía un UIView genérico en mi guión gráfico y en la sección Clase personalizada del Inspector de identidad cambié accidentalmente el nombre de UIView a galimatías.
Todo lo que se necesitó para arreglarlo fue volver a cambiarlo a UIView.
fuente
Lo que solo funcionó para mí es agregar el nombre del módulo al archivo xib ...
Entonces, los archivos xib se ven así:
Solución HORRIBLE en mi opinión, pero supuestamente así es como Apple quiere que lo hagamos ahora.
Esta pregunta muestra 3 posibles soluciones alternativas en beta 4 ... aparentemente Apple no ha sido muy útil en esta situación, según algunos, porque lo llaman "Trabajar según lo previsto".
fuente
Tuve el mismo problema con Xcode versión 6.1 (6A1052d). Creo que el problema aparece si cambiaste el nombre de tu aplicación / proyecto Xcode.
Mi solución fue agregar el nombre del módulo en el generador de interfaces manualmente.
fuente
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 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 solo la referencia) y luego volver a agregarlos usando 'Agregar archivos', esta vez comprobando ambos objetivos.
fuente