Als Apple die neue Programmiersprache Swift einführte , frage ich mich, wie Sie sie in vorhandene Objective-C-Bibliotheken integrieren können, die über CocoaPods verfügbar sind .
Antworten:
Cocoapods 0.36 und höher führen die use_frameworks!
Anweisung ein, die impliziert, dass der Bridging-Header für den Import von Objective-C-Pods in Swift nicht erforderlich ist.
Nachfolgend finden Sie ein vollständiges Beispiel für die Verwendung von MBProgressHUD und 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
Entfernen Sie die #imports aus Ihrem Bridging-Header oder löschen Sie sogar die Bridging-Header-Datei, wenn Sie sie nicht benötigen. Wenn Sie sich für die letztere Möglichkeit entscheiden, vergessen Sie nicht, den Pfad (zu dieser gelöschten Bridging-Header-Datei) in Ihrer Xcode-Projektkonfiguration zu löschen.
Fügen Sie import MBProgressHUD
und / oder import Alamofire
oben in jeder Swift-Datei hinzu, die diese Klasse (n) benötigt.
Sie verwenden jetzt echte Frameworks, sodass sich Ihre Aufzählungen im Flug bewegt haben! Möglicherweise haben Sie eine Zeile von Swift, die mit dem Bridging-Header wie folgt in Ordnung war:
progressHUD.mode = MBProgressHUDModeIndeterminate
Das muss jetzt so werden:
progressHUD.mode = MBProgressHUDMode.Indeterminate
Keine allzu große Sache, aber der Haufen von Fehlern könnte Sie in die Irre führen, dass Sie ein größeres Problem haben als Sie, wenn Sie viele Objective-C-Enums verwenden.
Zu Ihrer Information: Ich denke (Sie müssen selbst testen, um sicherzugehen), dass die use_frameworks! Anweisungen in Ihrem Podfile sind nur mit Xcode-Projekten kompatibel, die auf iOS> = 8 abzielen.
Es scheint, dass der Prozess dem im Abschnitt „ Mix and Match “ unter Verwenden von Swift mit Kakao und Objective-C beschriebenen ähnlich ist .
pod install
.Example-Bridging-Header.h
und fügen Sie sie dem Projekt hinzu.Objective-C Bridging Header
für Ihr Ziel ein:Jetzt können Sie Ihre Bibliothek, in diesem Fall MKUnits, in Ihrer Swift-Datei verwenden:
let kilograms = NSNumber.mass_kilogram(2)()
let pounds = NSNumber.mass_pound(10)()
let result = kilograms.add(pounds)
println(result)
#import <Reachability/Reachability.h>
als #import "Reachability.h"
.
UPDATE : Die stabile Version von CocoaPods 0.36 wurde veröffentlicht. Es unterstützt offiziell Swift.
CocoaPods unterstützt Swift jetzt in ihrer neuesten Version 0.36. Es ist noch in der Beta, aber es funktioniert.
Zuerst müssen Sie die CocoaPods Beta (derzeit Beta 2) installieren, indem Sie diese in Ihrem Terminal ausführen.
sudo gem install cocoapods --pre
Das wars so ziemlich. Sie können Swift-Bibliotheken wie gewohnt hinzufügen.
Es gibt jedoch einen Haken, wenn Sie einem Swift-Projekt über CocoaPods eine in Objective-C geschriebene Bibliothek hinzufügen möchten. Sie müssen die Zeile use_frameworks!
zu Ihrem Podfile hinzufügen. Hier ist ein Beispiel.
use_frameworks!
platform :ios, '8.0'
pod 'MagicalRecord'
Ich habe auch dazu einen Blog-Beitrag geschrieben .
use_frameworks!
ist nur für iOS> = 8 richtig? Wenn ja, sollten Sie dies in Ihre Antwort schreiben.
Wenn in Ihrem Bridging-Header.h ein Fehler "Datei nicht gefunden" angezeigt wird, möchten Sie möglicherweise sicherstellen, dass Ihre Pods-Bibliothek in Ihrem Build-Schema verknüpft ist.
Im Abschnitt zur Fehlerbehebung für CocoaPods wird hier unter Punkt 4 beschrieben, wie dies durchgeführt wird
Jetzt können Sie die Version cocoapods 0.36.0 verwenden, indem Sie ausführen, sudo gem install cocoapods
die die Integration schneller Frameworks unterstützt. Wenn Sie ein von swift geschriebenes Framework verwenden, sollten Sie es explizit in Podfile verwenden:
platform :ios, '8.0'
use_frameworks!
pod 'Alamofire'