Оскільки 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'