Technologische Neuigkeiten, Bewertungen und Tipps!

Verwenden von CocoaPods mit Xcode Playground

Hinweis: Der folgende Artikel hilft Ihnen weiter: Verwenden von CocoaPods mit Xcode Playground

Zurück zum Blog

Das Erstellen eines Spielplatzes in Xcode ist eine großartige Möglichkeit, Swift-Codierung zu üben, eine neue Swift-Funktion auszuprobieren oder einen Algorithmus zu erarbeiten. Und CocoaPods kann Bibliotheken und Frameworks von Drittanbietern problemlos in Ihren Code integrieren!

Allerdings treten Probleme auf, wenn man CocoaPods und einen Spielplatz zusammen nutzen möchte. Wir werden das heute in diesem Tutorial lösen. Ich zeige Ihnen, wie Sie Ihre Lieblingsbibliotheken mit CocoaPods nutzen und sie auf einem Spielplatz ausprobieren können.

Aber… warum solltest du das tun wollen? Die Verwendung von CocoaPods auf einem Spielplatz hat einige Vorteile:

  • Sie können eine neue Bibliothek oder ein neues Framework ausprobieren, ohne ein komplett neues Xcode-Projekt einzurichten
  • Sie können eine bestimmte Funktion einer Bibliothek oder eines Frameworks isolieren und auf einem Spielplatz damit experimentieren
  • Sie können eine Bibliothek mit Playgrounds und Codeausschnitten Ihrer bevorzugten Frameworks und Bibliotheken führen

CocoaPods ist ein sogenannter Abhängigkeitsmanager. Sie verwenden es, um Ihrer App Abhängigkeiten wie Bibliotheken und Frameworks von Drittanbietern hinzuzufügen. CocoaPods kann beliebte Swift-Bibliotheken wie Alamofire herunterladen und ihren Code in der Codebasis Ihrer App installieren.

Sobald Sie Ihrer App eine Bibliothek („Pod“ genannt) hinzugefügt haben, können Sie die Befehlszeilentools von CocoaPods verwenden, um die Bibliothek mit neuen Versionen auf dem neuesten Stand zu halten. Und CocoaPods verfügt über praktische Konfigurationsoptionen, um beispielsweise Ihren Code mit bestimmten Bibliotheksversionen auf dem neuesten Stand zu halten.

Sie teilen CocoaPods mit einer einfachen Datei, einer sogenannten Poddatei, mit, welche Bibliotheken und Frameworks Sie verwenden möchten. CocoaPods liest diese Datei, lädt die Bibliotheken von Drittanbietern herunter und fügt sie einem Pods-Xcode-Projekt hinzu. Dieses Projekt und das Xcode-Projekt Ihrer App werden dann einem Arbeitsbereich hinzugefügt. Dadurch wird der Code der Bibliothek effektiv zu Ihrem eigenen Projekt hinzugefügt.

CocoaPods war der erste große Abhängigkeitsmanager für iOS-Apps. Sie können auch Carthage oder Swift Package Manager verwenden. Die Anweisungen in diesem Tutorial funktionieren auch mit Carthage und Swift Package Manager.

Stellen Sie zunächst sicher, dass Sie CocoaPods auf Ihrem Mac installiert haben. Öffnen Sie Terminal und geben Sie den folgenden Befehl ein:

$ pod –Version

Sie müssen das $-Zeichen (Dollarzeichen) nicht in der Befehlszeile eingeben. Im obigen Code wird lediglich angegeben, dass der Text in der Befehlszeile eingegeben werden soll, beispielsweise im Terminal. Und überprüfen Sie immer, was Sie eingeben! Geben Sie nicht einfach alles ein, was Sie im Internet gelesen haben.

Wenn der obige Befehl fehlschlägt und etwas wie „Befehl nicht gefunden“ ausgibt, installieren Sie CocoaPods mit dem folgenden Befehl:

$ sudo gem Cocoapods installieren

Dadurch wird das Ruby-„Juwel“ für CocoaPods installiert. CocoaPods wird mit der Programmiersprache Ruby entwickelt, die standardmäßig auf macOS installiert ist.

Es wird empfohlen, CocoaPods mit der neuesten Version auf dem neuesten Stand zu halten. Um CocoaPods zu aktualisieren, wiederholen Sie einfach denselben Befehl:

$ sudo gem Cocoapods installieren

Nachdem Sie CocoaPods nun installiert haben, können wir fortfahren!

Es gibt keine einfache Möglichkeit, einem Spielplatz einen Pod hinzuzufügen, aber was wir heute tun werden, kommt dem ziemlich nahe.

Hier ist der Kern davon:

  1. Erstellen Sie ein Xcode-Projekt
  2. Erstellen Sie die Poddatei
  3. Installieren Sie Pods mit CocoaPods
  4. Fügen Sie dem Arbeitsbereich einen Spielplatz hinzu
  5. Importieren Sie das Modul eines Pods direkt in den Playground

Wenn Sie bereits mit CocoaPods, Xcode und der Verwendung von Playgrounds vertraut sind, dann legen Sie los. Viel Spaß beim Codieren! Wenn nicht, fahren wir mit dem ersten Schritt fort.

1. Erstellen Sie ein Xcode-Projekt

Zuerst erstellen wir ein einfaches Projekt in Xcode. Hier ist wie:

  1. Öffnen Sie Xcode auf Ihrem Mac
  2. Wählen Sie Datei -> Neu -> Projekt…
  3. Wählen Sie die Vorlage „Single View Application“ und klicken Sie auf „Weiter“.
  4. Geben Sie CocoaPodsExample als Projektnamen ein und klicken Sie auf Weiter
  5. Wählen Sie abschließend einen geeigneten Speicherort für dieses Projekt und klicken Sie auf Erstellen

2. Erstellen Sie die Poddatei

Als nächstes erstellen wir das Podfile. Diese Datei enthält alle Informationen zu den Bibliotheken, die wir unserem Projekt hinzufügen möchten.

Hier ist wie:

  1. Klicken Sie im Projektnavigator rechts neben Xcode mit der rechten Maustaste auf das CocoaPodsExample-Projekt und wählen Sie „Neue Datei…“
  2. Wählen Sie die Vorlage „Leer“ aus der Kategorie „Andere“ (scrollen Sie nach unten) und klicken Sie auf „Weiter“.
  3. Benennen Sie die Datei Podfile und achten Sie darauf, sie im selben Verzeichnis wie die Datei CocoaPodsExample.xcodeproj zu speichern
  4. Klicken Sie abschließend auf Erstellen

Note: Stellen Sie sicher, dass Sie der Datei den Namen „Podfile“ geben und nichts anderes. Also keine Erweiterung, nur Podfile.

Fügen Sie dann den folgenden Text zur Poddatei hinzu:

Plattform :ios, ‘11.0’
use_frameworks!

Ziel ‘CocoaPodsExample’ tun
Pod ‘SwiftyJSON’, ‘~> 4.0’
Ende

Was bedeutet dieser Code?

  • Die erste Zeile mit der Plattform teilt CocoaPods mit, dass die iOS-Version, die wir unterstützen möchten, iOS 11.0 ist. Dies ist normalerweise identisch mit der Bereitstellungsversion Ihres Xcode-Projekts.
  • Das use_frameworks! zeigt an, dass wir Cocoa Touch Frameworks anstelle statischer Bibliotheken erstellen möchten. Kurz gesagt, dies ist eine notwendige Einstellung für die Arbeit mit in Swift geschriebenen Bibliotheken.
  • Der Zielblock umschließt Pods, die wir einem bestimmten Build-Ziel hinzufügen möchten. In unserem Fall ist das CocoaPodsExample. Dies ist der Name unseres App-Projekts.
  • Der Pod-Code „SwiftyJSON“, „~> 4.0“ ist der wichtigste! Es teilt CocoaPods mit, dass wir die SwiftyJSON-Bibliothek in unserem Projekt verwenden möchten.

Sie können logische Ausdrücke wie >= verwenden, um anzugeben, welche Pod-Versionen Sie in Ihrem Projekt akzeptieren. Wenn Sie den Teil „~> 4.0“ weglassen, verwendet CocoaPods nur die neueste Version dieses Pods. Dies wird häufig zu Beginn eines Projekts empfohlen.

Der ~> wird als optimistischer Operator bezeichnet und akzeptiert Versionen „bis zu“ einer bestimmten Version. ~> 4.0 bedeutet beispielsweise, dass wir jede Version von 4.0 bis 4.9 (einschließlich) akzeptieren, jedoch nicht 5.0. Dies ist ideal für Situationen, in denen Sie Updates für eine Bibliothek benötigen, es sei denn, es handelt sich um größere Updates, die Ihren Code beschädigen können.

Zu lernen, wie CocoaPods funktioniert, ist eine gute Übung, da es viele praktische Softwareentwicklungsthemen berührt.

3. Installieren Sie Pods mit CocoaPods

Nachdem CocoaPods nun weiß, welche Bibliotheken wir benötigen, installieren wir sie.

Schließen Sie zunächst Ihr Projekt in Xcode und dann Xcode selbst.

Öffnen Sie dann Terminal und navigieren Sie mit „cd“ zu Ihrem Projektverzeichnis. Wenn Sie nicht wissen, wie das geht, ist es am einfachsten, einfach cd in Terminal einzugeben, dann das Verzeichnis Ihres Projekts per Drag-and-Drop vom Finder ins Terminal zu ziehen und schließlich die Eingabetaste zu drücken.

Geben Sie dann Folgendes in die Befehlszeile ein:

$ Pod-Installation

Dadurch werden die Pods aus Ihrer Poddatei installiert, indem das Pods-Projekt erstellt und einem neuen Arbeitsbereich hinzugefügt wird.

CocoaPods muss eine große Datei namens Podspec herunterladen, wenn Sie CocoaPods zum ersten Mal verwenden oder wenn Sie CocoaPods eine Weile nicht verwendet haben. Abhängig von Ihrer Internetgeschwindigkeit und der Größe der Podspec kann dies einige Minuten dauern.

Wenn der Pod erfolgreich installiert wurde, sehen Sie etwa Folgendes:

Abhängigkeiten analysieren
Abhängigkeiten herunterladen
SwiftyJSON (4.1.0) installieren
Pods-Projekt wird generiert
Kundenprojekt integrieren
[!] Bitte schließen Sie alle aktuellen Xcode-Sitzungen und verwenden Sie von nun an „CocoaPodsExample.xcworkspace“ für dieses Projekt.
Pod-Installation abgeschlossen! Es gibt 1 Abhängigkeit von der Poddatei und 1 insgesamt installierten Pod.

Sehen Sie diesen Hinweis? Von nun an müssen Sie CocoaPodsExample.xcworkspace verwenden. Suchen Sie diese Datei im Finder und öffnen Sie sie in Xcode.

Erscheint Ihr Projekt beim Öffnen des Arbeitsbereichs „geschlossen“? Stellen Sie sicher, dass Sie zuerst das Xcode-Projekt geschlossen haben, schließen Sie dann den Arbeitsbereich und öffnen Sie ihn erneut.
Verwenden von CocoaPods mit Xcode Playground

4. Fügen Sie dem Arbeitsbereich einen Spielplatz hinzu

Der wichtigste Aspekt bei der Verwendung von CocoaPods mit einem Spielplatz besteht darin, den Spielplatz zum Arbeitsbereich hinzuzufügen, anstatt nur einen eigenständigen Spielplatz zu erstellen. Das werden wir also als nächstes tun.

Gehen Sie bei geöffnetem Arbeitsbereich in Xcode wie folgt vor:

  • Wählen Sie zunächst Datei -> Neu -> Playground…
  • Wählen Sie dann die Vorlage „Leer“.
  • Benennen Sie dann die Datei „CocoaPodsExample“ und speichern Sie die Playground-Datei im selben Verzeichnis wie Ihr Xcode-Arbeitsbereich
  • Schließen Sie abschließend den angezeigten Playground-Editor

Suchen Sie als Nächstes die Datei „CocoaPodsExample.playground“ im Finder und ziehen Sie sie aus dem Finder in den Xcode-Arbeitsbereich.

Xcode wird den Spielplatz wahrscheinlich innerhalb des CocoaPodsExample-Projekts hinzufügen. Stellen Sie sicher, dass Sie es außerhalb des Projekts direkt in den Arbeitsbereich ziehen!

Im Projektnavigator können Sie die Datei per Drag-and-Drop auf die oberste Ebene ziehen. Wenn Xcode eine Kopie des Spielplatzes erstellt, löschen Sie einfach den vorherigen Verweis auf den Spielplatz.

Dieser Schritt ist etwas eigenartig, aber Sie wissen, dass Sie ihn richtig gemacht haben, wenn die Projekte Ihres Arbeitsbereichs wie folgt organisiert sind:

5. Importieren Sie das Pod-Modul in den Playground

Der letzte Schritt besteht darin, die Module, die CocoaPods generiert, direkt im Spielplatz zu verwenden. Dies ähnelt der Verwendung eines Pods in einem Xcode-Projekt, wenn Sie einen Import am Anfang einer Datei codieren.

Kompilieren Sie zunächst den Arbeitsbereich, indem Sie Befehl-B drücken. Dadurch werden die Projekte im Arbeitsbereich kompiliert und die Module des Pods auf dem Spielplatz verfügbar gemacht.

Öffnen Sie dann den Spielplatz in Xcode, indem Sie im Projektnavigator darauf klicken. Geben Sie Folgendes oben in die Datei ein:

SwiftyJSON importieren

Während Sie „Swifty“ eingeben, sollten die verfügbaren Module bereits im Feld für die automatische Vervollständigung angezeigt werden. So was:

Beim Kompilieren des Arbeitsbereichs und beim Ausführen des Spielplatzes können einige häufige Fehler auftreten. Lösungen für diese Fehler finden Sie im nächsten Abschnitt.

Lassen Sie uns endlich SwiftyJSON zum Laufen bringen! Fügen Sie dem Spielplatz den folgenden Code hinzu:

let json = JSON(parseJSON: „{\“hello\“: \“Playground!\“}“)
print(json[“hello”])
Und wenn Sie den Playground ausführen, sollte Folgendes in der Konsole erscheinen:

Spielplatz!
Eindrucksvoll! Es funktioniert 🙂

Bei der Verwendung von CocoaPods mit Spielplätzen können einige häufige Fehler auftreten. Nachfolgend finden Sie die Lösungen für diese Fehler. Und schauen Sie sich auch einige schnelle Tipps an, um CocoaPods und Spielplätze optimal zu nutzen!

Kein solches Modul

Wenn Sie eine Fehlermeldung wie „No such module SwiftyJSON“ sehen, haben Sie irgendwo einen Schritt verpasst. Gehen Sie zurück zum vorherigen Abschnitt und stellen Sie sicher, dass Sie die Pods korrekt hinzugefügt und den Arbeitsbereich mit Befehl-B erfolgreich kompiliert haben.

Symbole konnten nicht gesucht werden

Dieser Fehler tritt auf, wenn Sie CocoaPods Version 1.5 mit Xcode 9 verwenden. Sie können ihn beheben, indem Sie den folgenden Code am Ende Ihrer Poddatei hinzufügen:

post_install führt |installer| aus
installer.pods_project.build_configurations.each führt |config| aus
config.build_settings.delete(‘CODE_SIGNING_ALLOWED’)
config.build_settings.delete(‘CODE_SIGNING_REQUIRED’)
Ende

installer.pods_project.targets.each macht |target|
target.build_configurations.each macht |config|
config.build_settings[‘CONFIGURATION_BUILD_DIR’] = ‘$PODS_CONFIGURATION_BUILD_DIR’
Ende
Ende
Ende

Stellen Sie sicher, dass Sie die Pod-Installation erneut ausführen, um das Pods-Projekt neu zu generieren. Bereinigen Sie dann den Build mit Befehl-Umschalt-K, erstellen Sie ihn mit Befehl-B neu und starten Sie Ihren Spielplatz. Der Fehler sollte verschwinden.

JSON ist null

Im Beispielcode von SwiftyJSON, den wir zuvor verwendet haben, ist die JSON-Konstante möglicherweise leer, wenn der JSON nicht analysiert werden kann. Wenn Sie also den JSON-Code geändert haben, stellen Sie sicher, dass er keine Fehler enthält. Weitere Informationen zur Verwendung von SwiftyJSON finden Sie hier: https://github.com/SwiftyJSON/SwiftyJSON.

Playground manuell ausführen

Finden Sie es störend, dass Ihr Spielplatz läuft, während Sie programmieren? Stellen Sie es auf manuell! Halten Sie die Maustaste gedrückt und klicken Sie unten links auf Ihrem Spielplatz auf die Schaltfläche „Abspielen“ und wählen Sie dann „Manuell ausführen“ aus.

Führen Sie Playground auf unbestimmte Zeit aus

Wenn Sie mit asynchronem oder langlaufendem Code arbeiten, möchten Sie möglicherweise, dass Ihr Playground auf unbestimmte Zeit läuft. Andernfalls wird der Spielplatz möglicherweise beendet, bevor Ihr asynchroner Code zurückkehrt. So machen Sie das:

  • Fügen Sie import PlaygroundSupport oben in Ihrer Playground-Datei hinzu.
  • Fügen Sie PlaygroundPage.current.needsIndefiniteExecution = true in Ihren Swift-Code ein

Playground läuft jetzt auf unbestimmte Zeit und stoppt die Ausführung nach einem bestimmten Timeout (normalerweise 30 Sekunden). Mit diesem Code können Sie die Ausführung des Playgrounds auch manuell stoppen:

PlaygroundPage.current.finishExecution()

Wenn Ihr asynchroner Code zurückkehrt, beispielsweise nach dem Herunterladen einer Ressource, können Sie die obige Zeile aufrufen, um die Ausführung des Playgrounds zu stoppen.

Verwendung von CocoaPods mit einem Spielplatz: Die Einrichtung ist etwas umständlich, funktioniert aber auf jeden Fall.

Sobald Sie eingerichtet sind, können Sie Ihrem Arbeitsbereich so viele Spielplätze hinzufügen, wie Sie möchten. Und Sie können Ihrem Podfile mehrere Frameworks und Bibliotheken hinzufügen, um ein Repository mit Playgrounds, Best Practices und Code-Snippets aufzubauen. Eindrucksvoll!

.