Wie kann man Cocoapods in ein Swift-Projekt integrieren?
84
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 .
Sie können auch meinen letzten Artikel darüber lesen, wie Sie CocoaPods mit Ihrem Swift-Projekt einrichten.
Hemang
Antworten:
78
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 :
1. Podfile
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
2. Löschen
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.
3. Importe hinzufügen
Fügen Sie import MBProgressHUDund / oder import Alamofireoben in jeder Swift-Datei hinzu, die diese Klasse (n) benötigt.
4. Korrigieren Sie ggf. die Aufzählungen
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.
Für mich musste die import-Anweisung das Projektverzeichnis enthalten, auch bekannt #import <Reachability/Reachability.h>als #import "Reachability.h".
Kyle Clegg
Nur ein Update. Swift PODs, dh: Swift Libs werden in Kürze auch von CocoaPods unterstützt. Die nächste Version 0.36 bietet die volle Swift-Unterstützung für CocoaPods. Der größte Teil der Funktion ist bereits abgeschlossen und Sie können die Swift Pods jetzt anhand der Anweisungen aus meinem Blog-Beitrag
Sachin Palewar
2
Cocoapods 0.36 und höher führen die use_frameworks ein! Anweisung, die impliziert, dass der Bridging-Header für den Import von Objective-C-Pods in Swift nicht mehr benötigt wird (siehe meine Antwort unten).
König-Zauberer
5
Darüber hinaus stellte ich fest, dass ich "Pods / **" zu meinen "User Header Search Paths" in den Build-Einstellungen hinzufügen musste. Ich musste auch "#import <Foundation / Foundation.h>" zur Bridge-Datei hinzufügen.
Swifty McSwifterton
1
Vielen Dank, Swifty. Ich habe use_frameworks ausprobiert! aber es hat bei mir nicht funktioniert. Das Hinzufügen von "Pods / **" zum Benutzersuchpfad hat funktioniert.
user3246173
16
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'
use_frameworks!ist nur für iOS> = 8 richtig? Wenn ja, sollten Sie dies in Ihre Antwort schreiben.
Confile
2
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 cocoapodsdie 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'
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 :
1. Podfile
2. Löschen
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.
3. Importe hinzufügen
Fügen Sie
import MBProgressHUD
und / oderimport Alamofire
oben in jeder Swift-Datei hinzu, die diese Klasse (n) benötigt.4. Korrigieren Sie ggf. die Aufzählungen
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:
Das muss jetzt so werden:
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.
( Quelle dieser Antwort )
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.
quelle
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:
Mehr hier: Integration von Cocoapods in ein Swift-Projekt
quelle
#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.
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.Ich habe auch dazu einen Blog-Beitrag geschrieben .
quelle
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
quelle
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:quelle
In meinem Fall stellte ich fest, dass ich dem Hauptziel keine Pods hinzufügte, sondern nur Test- und TestUI-Ziele in Podfile, wie hier erläutert .
quelle