google ios objective-c xcode swift cocoapods

ios - google - cocoapods swift 4



¿Cómo integrar Cocoapods con un proyecto Swift? (6)

Cuando Apple presentó Swift , su nuevo lenguaje de programación, me pregunto cómo se puede integrar con las bibliotecas Objective-C existentes que están disponibles a través de CocoaPods .


Ahora puede usar la versión de cocoapods 0.36.0 ejecutando sudo gem install cocoapods que admite la integración de frameworks rápidos. Cuando utiliza un marco escrito por swift, debe usarlo explícitamente en Podfile:

platform :ios, ''8.0'' use_frameworks! pod ''Alamofire''


En mi caso, descubrí que no estaba agregando pods al objetivo principal, sino que solo probaba y probaba los objetivos de UserUI en Podfile, como se explica here .


Parece que el proceso es similar al descrito en la sección Mix and Match de Using Swift with Cocoa and Objective-C documentation.

  1. Crea tu Podfile y ejecuta la pod install .
  2. Cree un nuevo archivo de encabezado Objective-C, Example-Bridging-Header.h , y agréguelo al proyecto.
  3. Agregue una declaración de importación al encabezado del puente .
  4. Establezca el Objective-C Bridging Header para su objetivo:

Ahora puede usar su biblioteca, en ese caso, MKUnits, en su archivo Swift:

let kilograms = NSNumber.mass_kilogram(2)() let pounds = NSNumber.mass_pound(10)() let result = kilograms.add(pounds) println(result)

Más aquí: Integrando Cocoapods con un proyecto Swift


Si obtiene un error de archivo no encontrado en su bridging-header.h, le recomendamos que se asegure de que su biblioteca de Pods esté vinculada en su Build Scheme.

La sección de solución de problemas de CocoaPod describe cómo hacerlo en el elemento n.º 4 here


ACTUALIZACIÓN : Se ha lanzado la versión estable de CocoaPods 0.36. Es oficialmente compatible con Swift.

CocoaPods ahora es compatible con Swift en su última versión 0.36. Todavía está en beta, pero funciona.

Primero necesita instalar la versión beta de CocoaPods (actualmente beta 2) ejecutando esto en su Terminal.

sudo gem install cocoapods --pre

Eso es practicamente todo. Puede agregar bibliotecas Swift como lo haría normalmente.

Pero hay una trampa si desea agregar una biblioteca escrita en Objective-C a un proyecto de Swift a través de CocoaPods. ¡Necesitas agregar la línea use_frameworks! a tu Podfile Aquí hay un ejemplo.

use_frameworks! platform :ios, ''8.0'' pod ''MagicalRecord''

Escribí una publicación en el blog sobre esto también.


Cocoapods 0.36 y superior presenta el use_frameworks! instrucción que implica que el encabezado de puente no es necesario para importar conjuntos de Objective-C en Swift.

A continuación encontrará un ejemplo completo con MBProgressHUD y Alamofire :

1. Podfile

source ''https://github.com/CocoaPods/Specs.git'' platform :ios, ''8.3'' use_frameworks! pod ''Alamofire'', ''>= 1.2.2'' # Swift pod pod ''MBProgressHUD'', ''>= 0.9.1'' # Objective-C pod

2. Eliminación

Elimine los importes de su encabezado de puente o incluso elimine el archivo de encabezado de puente si no lo necesita. Si elige la última posibilidad, no olvide eliminar la ruta (a este archivo de encabezado de puente eliminado) en su configuración de proyecto de Xcode.

3. Agregando importaciones

Agregue import MBProgressHUD y / o import Alamofire en la parte superior de cada archivo Swift que necesite estas clases.

4. Arregle las enumeraciones si es necesario

¡Ahora está usando marcos de trabajo de buena fe, por lo que sus enumeraciones se han movido en vuelo! Es posible que tenga una línea de Swift que estaba bien con el encabezado de puente como este:

progressHUD.mode = MBProgressHUDModeIndeterminate

Eso ahora tiene que convertirse en esto:

progressHUD.mode = MBProgressHUDMode.Indeterminate

No es un gran problema, pero la gran cantidad de errores te puede llevar a descarriar que tienes un problema mayor que el que tienes si usas muchos enunciados de Objective-C.

( Fuente de esta respuesta )

Para su información: supongo (tendrá que probar usted mismo para estar seguro) que use_frameworks! las instrucciones en su Podfile solo son compatibles con los proyectos de Xcode dirigidos a iOS> = 8.