Acabo de actualizar a Xcode 6 Beta 4 y tengo un marco que creé para Live Views en Beta 2. Debido a otro error rápido , necesitaba usar un código Obj-C. Sin embargo, cuando actualizo, aparece el siguiente error:
error: el uso de encabezados de puente con objetivos de marco no es compatible
No he visto nada en las notas de la versión, ni he encontrado ninguna otra ruta de migración. ¿Alguien más ha visto esto y llegó a una solución?
Me doy cuenta de que Beta 3 eliminó la necesidad de marcos para vistas en vivo, pero tiene sentido en mi caso si puedo hacer que funcione. Sin embargo, puedo eliminarlo como alternativa, pero preferiría usar un marco si no están totalmente rotos en Beta 4.
xcode
frameworks
beta
Chris Conover
fuente
fuente
Respuestas:
Como indica el error, los encabezados de puente no están permitidos en Frameworks. La sección Importar código desde el mismo marco objetivo de la documentación de Apple Mix & Match sugiere esto. Como dicen, debe "En su archivo de encabezado paraguas, importar todos los encabezados de Objective-C que desee exponer a Swift".
Sin embargo, descubrí que es posible que también necesites hacer públicos esos encabezados específicos. Esta respuesta revisa por qué y cómo hacer eso: Error del compilador Swift: "encabezado no modular dentro del módulo marco" .
Entonces, haz esto:
Nota : El "archivo de encabezado paraguas" es un archivo (denominado [ProductName] .h) que generalmente representa todos los encabezados públicos de un marco. Por lo general, es solo una lista de declaraciones de #importación a otros encabezados contenidos en el marco. En Xcode, si abre UIKit.h, verá un buen ejemplo de un archivo paraguas.
fuente
Hay dos posibilidades Agregar los encabezados necesarios al archivo de encabezado general y hacerlos públicos es una forma. Sin embargo, esto es un problema si los encabezados deberían estar disponibles para Swift, pero no públicos.
La segunda posibilidad que hará que los encabezados internos estén disponibles para Swift se describe en detalle aquí . Esencialmente, se debe crear un mapa de módulo similar al siguiente:
Esto se puede incluir en XCode usando la configuración:
fuente
header
declaración acepta una ruta relativa. ¿Qué haces cuando quieres agregar los encabezados de otro marco?Consulte Importar Objective-C en Swift .
Para importar código Objective-C en Swift desde el mismo marco
En su archivo de encabezado general, importe todos los encabezados de Objective-C que desee exponer a Swift. Por ejemplo:
Haga públicos los archivos incluidos en la sección "Encabezados" del marco de sus "Fases de compilación".
Limpiar y reconstruir.
Swift verá cada encabezado que exponga públicamente en su encabezado general. El contenido de los archivos Objective-C en ese marco estará disponible en cualquier archivo Swift dentro de ese objetivo marco automáticamente, sin ninguna declaración de importación. Use su código personalizado de Objective-C con la misma sintaxis Swift que usa con las clases del sistema.
Importante: el "archivo de encabezado paraguas" significa el archivo {ModuleName} .h. Por cierto, el nombre de destino es {ModuleName} .framework.
fuente
En mi caso, solo eliminé la
Objective-C Bridging Header
configuración de mi marcoBuild Settings
.fuente