wake-up-neo.com

Mit Swift 4.1.2 kompiliertes Modul kann nicht in Swift 4.1.50: Xcode 10 Error importiert werden

Swift 4.2 kam heraus und ich bekomme diese Fehlermeldung in meinem Projekt, wenn Sie ObjectMapper und einige andere Pods verwenden:

Mit Swift 4.1.2 kompiliertes Modul kann nicht in Swift 4.1.50 importiert werden

Wie kann ich Xcode sagen, dass er mein Projekt aktualisieren und auf Swift 4.2 migrieren soll?

16
Sahil Kapoor

In Swift 4.2 gibt es eine Änderung in der Implementierung von implizit ungepackt optional (IUO), wie im Swift-Blog jetzt implizit unwrapped optional T! wird als T betrachtet? with und extra Flag für den Compiler, um zu wissen, dass es ein implizites optionales Unwrap ist. 

Das neue mentale Modell für IUOs ist eines, an das Sie denken! ein ... zu sein Synonym für? mit dem Zusatz, dass er der Deklaration ein Flag hinzufügt Den Compiler wissen lassen, dass der deklarierte Wert implizit sein kann ausgepackt.

Aufgrund dieser Änderung kann es zu Problemen mit der Quellkompatibilität kommen, bei denen Sie möglicherweise den Code ändern müssen, bevor er erfolgreich kompiliert werden kann. 

In Swift 3 können Deklarationen wie var a: Int? würde zu einem Have-Typ Optional und Deklarationen wie var b: String führen! würde dazu führen, dass b den Typ ImplicitlyUnwrappedOptional hat. Es wurde in Swift 4.2 geändert, daher wurde der Anzeigefehler für ObjectMapper für Xcode 10, der mit Swift 4.2 geliefert wird, und eine ähnliche Implementierung für 3. * für Xcode 10 durchgeführt.

In der Objectmapper-Bibliothek gibt es einige Funktionsdeklarationen, die früher Warnungen für Swift 4.1 angezeigt haben und jetzt als Fehler für Swift 4.2 angezeigt werden. Warnungen in Xcode 9.4 und Swift 4.1 finden Sie in der Abbildung unten

 enter image description here

Es gibt einige Pull-Requests im ObjectMapper GitHub-Repo, durch die das Problem behoben wurde. Sie warten jedoch auf die neue Xcode-Betaversion gemäß den Diskussionen, da sie die compli- ne Direktive -Funktion verwendet, die kürzlich akzeptiert wurde veröffentlicht mit neuer Xcode-Beta.

Update:Das Problem ist in der Version ObjectMapper 3.3.0 behoben. 

8
Suhit Patil

Sie kompilieren Ihr Carthage-Modul nicht mit der richtigen Swift-Version. Sie müssen also:

  1. Stellen Sie sicher, dass Ihr Terminal auf Ihre Xcode 10 Beta-App verweist und nicht auf Ihren regulären Xcode:

Sudo xcode-select -switch Xcode_beta_10.app

  1. Aktualisieren Sie Ihre Carthage-Dateien:

Karthago-Update - Plattform iOS --no-use-binaries

  1. Gehen Sie zurück zu Ihrem Projekt in Xcode, bereinigen, erstellen Sie
25
Fouad

Führen Sie den folgenden Befehl in Ihrem Projektverzeichnis mithilfe des Terminals aus. Es wird Ihre Pod aktualisieren. Hoffe, es wird dein Problem lösen.

pod update ObjectMapper
1
Sagar Unagar

Sie müssen die Xcode-Betaversion im Terminal umstellen. Entfernen Sie das alte Carthage-Dokument in Ihrem Projekt. Karthago carthage update --platform iOS --no-use-binaries aktualisieren.

0
user3488542