Übertragen eines Projekts von Swift 4.2 auf Swift 5.0

Hallo Habr! Ich präsentiere Ihnen die Übersetzung des Artikels "Swift 5.0: So migrieren Sie Ihr Projekt und Ihre Frameworks" von Antoine Van Der Lee.

Swift 5.0 wurde im März 2019 veröffentlicht und ist die erste stabile Version von ABI Swift. Obwohl viele Ressourcen die neuen Funktionen von Swift 5.0 abdecken, erfahren Sie nicht oft, was Sie tun müssen, um Ihr Projekt auf Swift 5.0 zu aktualisieren.

In diesem Beitrag werde ich die Schritte behandeln, die Sie ausführen können, um ein vorhandenes Projekt auf Swift 5.0 zu aktualisieren.

Stellen Sie sicher, dass Ihr Projekt bereits auf Swift 4.2 portiert wurde.
Ich bin nicht überrascht, wenn dieser Artikel Ihren Produktmanager davon überzeugt, die Zeit für den Übergang zu planen.

Automatische Migration mit dem Migrantenassistenten


Xcode schlägt vor, den Migrationsassistenten zu verwenden, um Ihren Code automatisch auf die aktuelle Swift-Syntax zu aktualisieren. Diese Konvertierung verwendet die neueste Version von Swift, die mit der installierten Version von Xcode verfügbar ist.

Xcode 10.2 ist die erste Version, die Swift 5.0 enthält. Sie müssen daher diese Version der Software verwenden.

Diese Funktion erledigt oft die harte Arbeit für Sie. Daher empfehle ich, den Code-Port unter Bearbeiten -> Konvertieren -> In aktuelle Swift-Syntax zu starten .

Tipp: Stellen Sie sicher, dass Sie dies nur für Ihr Projekt und Framework tun. Sie können die Konvertierung für externe Abhängigkeiten überspringen.



Abhängigkeitsaktualisierung


Höchstwahrscheinlich haben Sie einige Swift-Abhängigkeiten, die aktualisiert werden müssen. Viele große Open Source-Projekte wie Alamofire und Moya haben bereits mit der Version Swift 5.0 begonnen.

Es ist jedoch wahrscheinlich, dass nicht alle Ihre Abhängigkeiten bereits aktualisiert wurden. Obwohl ich Sie dringend bitten möchte, die Übertragung durchzuführen und dann die Pull-Anfrage selbst einzureichen, müssen Sie wahrscheinlich etwas warten, bis die Projektbesitzer dies selbst tun.

Wenn Sie nach dieser Übertragung einen vollständigen intensiven Test Ihrer Anwendung durchführen möchten, kann es sich lohnen, Ihre Abhängigkeiten auch direkt zu aktualisieren. Ihr Test wird diese Updates direkt abdecken, was ein "doppelter Gewinn" sein kann.

CI-Umgebungsaktualisierung


Wenn Sie Travis, Jenkins oder eine andere CI-Plattform verwenden, müssen Sie auch Xcode aktualisieren.



Verwenden des Ergebnisses in Swift


Xcode Converter führt nur grundlegende Codeänderungen durch. Der neue Ergebnistyp , der jetzt in der Swift-Standardbibliothek enthalten ist, wird nicht berücksichtigt. Viele Frameworks haben den Typ "Ergebnis" in ihren Code aufgenommen. Dies kann bedeuten, dass Sie ziemlich viele Daten mit einem Aufzählungstyp haben, der nicht mehr benötigt wird. Beeilen Sie sich jedoch nicht, sie durch Daten aus Ihren Abhängigkeiten zu ersetzen: Sie sind auf Codeänderungen in der externen Struktur angewiesen.

Häufige Fehlerart



Es ist wahrscheinlich, dass Ihr aktueller "Ergebnistyp" nur den Typ für den entsprechenden Fall definiert hat.

Für das Ergebnis in Swift 5.0 müssen Sie außerdem den erwarteten Fehlertyp ermitteln. Als respektabler Bürger sollten Sie versuchen, diese Art von Fehler konkret zu machen, basierend auf Ihren Erwartungen. Wenn Sie jedoch die Migration beschleunigen möchten, können Sie den Typ auch einfach auf Swift.Error setzen .

Tipp: Wenn Sie mehr über den neuen Ergebnistyp in Swift 5.0 erfahren möchten, empfehlen wir Ihnen, diesen Artikel zu lesen.

Wir berücksichtigen die Stabilität von ABI


Tatsächlich ist die ABI-Stabilität ein separates Problem. Weitere Informationen hierzu finden Sie im offiziellen Swift-Blog.

Beachten Sie, dass die Größe der Anwendung, die Sie herunterladen , abnimmt , da Anwendungen die Standard-Swift-Bibliothek nicht mehr einbetten müssen!

Dies sollte Ihr Produkt davon überzeugen, die Zeit für die Übertragung zu finden.
Wenn Sie mehr in Swift 5.0 eintauchen möchten, können Sie zum Blogbeitrag von Apple Migrating to Swift 5.0 springen .

Source: https://habr.com/ru/post/de447098/


All Articles