Оскільки Apple представила Swift , їхню нову мову програмування, мені цікаво, як ви можете інтегрувати її з існуючими бібліотеками Objective-C, доступними через CocoaPods ?
Відповіді:
Cocoapods 0.36 і вище вводить use_frameworks!інструкцію, яка вказує на те, що мостовий заголовок не потрібен для імпорту стручків Objective-C у Swift.
Нижче наведено повний приклад використання MBProgressHUD та 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
Видаліть #imports з мостового заголовка або навіть видаліть файл мостового заголовка, якщо він вам не потрібен. Якщо ви вибрали останню можливість, не забудьте видалити шлях (до цього видаленого мостового файлу заголовка) у конфігурації проекту Xcode.
Додайте import MBProgressHUDта / або import Alamofireвгорі кожного файлу Swift, для якого потрібні ці класи.
Зараз ви використовуєте добросовісні рамки, тож ваші переліки рухаються в польоті! Можливо, у вас є рядок Swift, який чудово відповідав мостовому заголовку, як це:
progressHUD.mode = MBProgressHUDModeIndeterminate
Це тепер має стати таким:
progressHUD.mode = MBProgressHUDMode.Indeterminate
Не велика угода, але купа помилок може збити вас з дороги, бо у вас є більша проблема, ніж у вас, якщо ви використовуєте багато переліків Objective-C.
Для вашої інформації: я здогадуюсь (вам доведеться перевірити самостійно, щоб бути впевненим), що use_frameworks! інструкція у вашому підфайлі сумісна лише з проектами Xcode, націленими на iOS> = 8.
Здається, що процес схожий на той, що описаний у розділі « Змішати та зіставити» документації « Використання Swift з какао» та «Objective-C» .
pod install.Example-Bridging-Header.hта додайте його до проекту.Objective-C Bridging Headerдля своєї цілі:
Тепер ви можете використовувати свою бібліотеку, у цьому випадку MKUnits, у своєму файлі Swift:
let kilograms = NSNumber.mass_kilogram(2)()
let pounds = NSNumber.mass_pound(10)()
let result = kilograms.add(pounds)
println(result)
Більше тут: Інтеграція Cocoapods із проектом Swift
#import <Reachability/Reachability.h>а не ніж #import "Reachability.h".
ОНОВЛЕННЯ : Випущена стабільна версія CocoaPods 0.36. Він офіційно підтримує Swift.
CocoaPods тепер підтримує Swift в їх останньому випуску 0.36. Він все ще в бета-версії, але працює.
Спочатку вам потрібно встановити бета-версію CocoaPods (на даний момент бета-версія 2), запустивши її у своєму терміналі.
sudo gem install cocoapods --pre
Це майже все. Ви можете додавати бібліотеки Swift, як зазвичай.
Але є проблема, якщо ви хочете додати бібліотеку, написану в Objective-C, до проекту Swift через CocoaPods. Вам потрібно додати рядок use_frameworks!до вашого підфайлу. Ось приклад.
use_frameworks!
platform :ios, '8.0'
pod 'MagicalRecord'
use_frameworks!це лише для iOS> = 8 так? Якщо так, то напишіть це у своїй відповіді.
Тепер ви можете використовувати версію cocoapods 0.36.0, запустивши програму, sudo gem install cocoapodsяка підтримує інтеграцію швидких фреймворків. Коли ви використовуєте фреймворк, написаний swift, вам слід явно використовувати його в Podfile:
platform :ios, '8.0'
use_frameworks!
pod 'Alamofire'