Saltar al contenido

Importar marco en Swift Project, Xcode

Solución:

Si lo entiendo correctamente, no tiene un objetivo de compilación separado para su marco (ya lo creó con XCode 5) e incluyó el marco en el objetivo de compilación de su proyecto.

La parte de la documentación a la que te refieres trata sobre los marcos dentro de diferente objetivos. Dado que su marco está en el destino del proyecto, esta parte de la documentación no se aplica aquí.

En su caso, no puede importar el marco en su archivo Swift. Por eso aparece el mensaje de error. “No existe tal módulo myFramework”. myFramework no es un módulo, es parte del módulo de su proyecto (que está determinado por defecto por el nombre de su producto). Como tal, las clases en su marco deberían ser accesibles.

Sin embargo, su marco está escrito en Objective-C. Entonces, lo que debe hacer es importar las clases de orientación Swift en su encabezado puente como se describe aquí.

Tenga en cuenta que esto no tiene nada que ver con la importación Swift de un módulo. La directiva de importación en el archivo de encabezado puente simplemente notifica al compilador que ‘traduzca’ los archivos de encabezado de Objective-C a la sintaxis de Swift y hace que el encabezado público sea visible para Swift.

Entonces, ¿qué deberías hacer ahora?

  • Primero importe los archivos de encabezado que le interesan en el encabezado puente. Solo necesita importar los encabezados con los que interactuará en Swift.

  • Intente compilar su proyecto en esta etapa. Si XCode no puede encontrar los archivos de encabezado del marco, su problema probablemente no esté relacionado con Swift o XCode 6, sino un problema con la inclusión de marcos en general.

  • Después de eso, intente crear una instancia de una clase que importó en el encabezado puente, tal vez en su AppDelegate.swift. El autocompletado de XCode debería ofrecerle los nombres de los tipos.

Espero que esto ayude.

En Swift:

Crear marco: –

  1. Inicie Xcode -> Cree un nuevo proyecto Xcode -> iOS -> Framework & Library -> Cocoa Touch Framework -> Nombre el marco (por ejemplo, sampleCocoaFramework) -> Crear.

  2. Establecer destino -> General -> Información de implementación -> Destino de implementación.

  3. Agregue una clase pública: Archivo -> Nuevo archivo -> iOS -> Archivo Swift -> Nómbrelo (por ejemplo, openCocoaClass) -> Crear.

  4. Ahora agregue algo de código a openCocoaClass.swift.

    import Foundation
    
    public class openCocoaClass {
    
        public init() {
    
        }
    
        public var samplePublicVariable = "samplePublicVariable @ openCocoaClass"
    
        public func samplePublicFunction()
        {
            print("samplePublicFunction @ openCocoaClass")
        }          
    

    }

  5. Limpiar el proyecto: Producto -> Limpiar

  6. Configure los ajustes del esquema: Producto -> Esquema -> Editar esquema -> Ejecutar -> Configuración de compilación -> Lanzamiento.

  7. Construya el marco: Producto -> Construir.

  8. Exporte el marco: Productos -> Seleccione el marco -> Identidad y tipo -> Ruta completa -> Marco publicado.

Agregar marco al proyecto: –

  1. Inicie un proyecto de Xcode y asígnele un nombre (por ejemplo, CocoaFrameworkTest).

  2. Arrastre y suelte sampleCocoaFramework.framework en la carpeta del proyecto CocoaFrameworkTest.

  3. Destino -> General -> Incrustar binarios -> Agregar otro -> Seleccionar marco -> Copiar elementos si es necesario -> Listo.

Accediendo a Framework en ViewController:

import UIKit
import sampleCocoaFramework


class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let frameworkObject =  openCocoaClass.init()
        frameworkObject.samplePublicFunction()
        print(frameworkObject.samplePublicVariable)


    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

Según la documentación de Swift

Para importar código Objective-C en Swift desde el mismo objetivo

  1. En su archivo de encabezado de puente de Objective-C, importe cada encabezado de Objective-C que desee exponer a Swift. Por ejemplo:

    #import "XYZCustomCell.h"

    #import "XYZCustomView.h"

    #import "XYZCustomViewController.h"

  2. En Configuración de compilación, asegúrese de que la configuración de compilación del encabezado de puente Objective-C en Compilador rápido – Generación de código tenga una ruta al encabezado. La ruta debe ser directamente al archivo en sí, no al directorio en el que se encuentra. La ruta debe ser relativa a su proyecto, similar a la forma en que se especifica su ruta Info.plist en Configuración de compilación. En la mayoría de los casos, no debería necesitar modificar esta configuración.

Cualquier encabezado público de Objective-C enumerado en este archivo de encabezado puente será visible para Swift. La funcionalidad Objective-C estará disponible en cualquier archivo Swift dentro de ese objetivo automáticamente, sin declaraciones de importación. Use su código Objective-C personalizado con la misma sintaxis Swift que usa con las clases del sistema.

let myCell = XYZCustomCell()
myCell.subtitle = "A custom cell"

Además, asegúrese de que la configuración de compilación “Define Module” en “Packaging” esté establecida en “Yes”.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *