Quando a Apple apresentou o Swift , sua nova linguagem de programação, eu me pergunto como você pode integrá-lo às bibliotecas Objective-C existentes que estão disponíveis através do CocoaPods .
Respostas:
Cocoapods 0.36 e acima apresentam ouse_frameworks!
instrução que implica que o cabeçalho de ponte não é necessário para importar pods Objective-C em Swift.
Veja abaixo um exemplo completo usando MBProgressHUD e 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
Remova o #imports de seu cabeçalho de ponte ou até mesmo exclua o arquivo de cabeçalho de ponte se você não precisar dele. Se você escolher a última possibilidade, não se esqueça de excluir o caminho (para este arquivo de cabeçalho de ponte excluído) na configuração do projeto Xcode.
Adicionar import MBProgressHUD
e / ouimport Alamofire
no topo de todos os arquivos Swift que precisam dessas classes.
Agora você está usando frameworks genuínos, então seus enums mudaram durante o vôo! Você pode ter uma linha de Swift que combinava com o cabeçalho de ponte como este:
progressHUD.mode = MBProgressHUDModeIndeterminate
Isso agora tem que se tornar isso:
progressHUD.mode = MBProgressHUDMode.Indeterminate
Não é grande coisa, mas a pilha de erros pode levá-lo ao erro, dizendo que você tem um problema maior do que se estiver usando muitos enums Objective-C.
Para sua informação: Eu acho (você terá que testar você mesmo para ter certeza) que o use_frameworks! a instrução em seu Podfile só é compatível com projetos Xcode destinados a iOS> = 8.
Parece que o processo é semelhante ao descrito na seção Mix and Match da documentação Using Swift with Cocoa and Objective-C .
pod install
.Example-Bridging-Header.h
, e adicione-o ao projeto.Objective-C Bridging Header
para o seu alvo:Agora você pode usar sua biblioteca, nesse caso, MKUnits, em seu arquivo Swift:
let kilograms = NSNumber.mass_kilogram(2)()
let pounds = NSNumber.mass_pound(10)()
let result = kilograms.add(pounds)
println(result)
Mais aqui: Integrando Cocoapods com um projeto Swift
#import <Reachability/Reachability.h>
vez de #import "Reachability.h"
.
ATUALIZAÇÃO : a versão estável 0.36 do CocoaPods foi lançada. Ele oficialmente suporta Swift.
CocoaPods agora suporta Swift em sua versão 0.36 mais recente. Ainda está em beta, mas funciona.
Primeiro você precisa instalar o CocoaPods beta (atualmente beta 2) executando-o em seu Terminal.
sudo gem install cocoapods --pre
É basicamente isso. Você pode adicionar bibliotecas Swift como faria normalmente.
Mas há um problema se você quiser adicionar uma biblioteca escrita em Objective-C a um projeto Swift por meio do CocoaPods. Você precisa adicionar a linha use_frameworks!
ao seu Podfile. Aqui está um exemplo.
use_frameworks!
platform :ios, '8.0'
pod 'MagicalRecord'
use_frameworks!
é apenas para iOS> = 8 certo? Se sim, você deve escrever isso em sua resposta.