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 .
Respuestas:
Cocoapods 0.36 y superior presenta la use_frameworks!
instrucción que implica que el encabezado puente no es necesario para importar pods Objective-C en Swift.
A continuación, encontrará un ejemplo completo con MBProgressHUD y Alamofire :
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
Elimine las #importaciones de su encabezado puente o incluso elimine el archivo de encabezado puente si no lo necesita. Si elige la última posibilidad, no olvide eliminar la ruta (a este archivo de encabezado de puente eliminado) en la configuración de su proyecto Xcode.
Agregue import MBProgressHUD
y / o import Alamofire
en la parte superior de todos los archivos Swift que necesiten estas clases.
Ahora estás usando frameworks de buena fe, ¡así que tus enumeraciones se han movido en vuelo! Es posible que tenga una línea de Swift que esté bien con el encabezado de puente como este:
progressHUD.mode = MBProgressHUDModeIndeterminate
Eso ahora tiene que convertirse en esto:
progressHUD.mode = MBProgressHUDMode.Indeterminate
No es gran cosa, pero la pila de errores puede llevarlo por mal camino y pensar que tiene un problema mayor que el que tiene si está usando muchas enumeraciones de Objective-C.
Para su información: supongo (tendrá que probarlo usted mismo para estar seguro) que use_frameworks! La instrucción en su Podfile solo es compatible con proyectos Xcode dirigidos a iOS> = 8.
Parece que el proceso es similar al descrito en la sección Mezclar y combinar de Uso de Swift con Cocoa y la documentación de Objective-C .
pod install
.Example-Bridging-Header.h
, y agréguelo al proyecto.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)
#import <Reachability/Reachability.h>
como #import "Reachability.h"
.
ACTUALIZACIÓN : Se ha lanzado la versión estable de CocoaPods 0.36. Es compatible oficialmente con Swift.
CocoaPods ahora es compatible con Swift en su última versión 0.36. Todavía está en versión beta pero funciona.
Primero debe instalar CocoaPods beta (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 un problema si desea agregar una biblioteca escrita en Objective-C a un proyecto Swift a través de CocoaPods. Necesita agregar la línea use_frameworks!
a su Podfile. He aquí un ejemplo.
use_frameworks!
platform :ios, '8.0'
pod 'MagicalRecord'
También escribí una publicación de blog sobre esto.
use_frameworks!
es solo para iOS> = 8 ¿verdad? Si es así, debe escribir esto en su respuesta.