wake-up-neo.com

Module, die mit Swift 4.0 kompiliert wurden, können nicht in Swift 4.0.1 importiert werden

Allerdings habe ich das Framework mit dem gleichen Xcode neu kompiliert und es gibt mir immer noch diesen Fehler.

  • Basis SDK iOS 11.1 für beide
  • Swift Language Version Swift 4.0 für beide
  • Keine Verwendung von Pods/Carthage

Ich hoffe jemand könnte es wissen

75
Simon

Update:

Für Release-Versionen von Xcode:

Dieser Fehler (und ähnliche Fehler, die Swift 4.1, 4.2 usw.) betreffen) tritt auf, wenn ein Projekt mit Xcode 9.1, 9.2, 9.3, 9.4, 10 usw. geöffnet wird, das erstellte Frameworks verwendet mit früheren Xcode-Tools.

Um das Problem zu beheben, aktualisieren und erstellen Sie Ihre Frameworks mit Carthage (carthage update --platform iOS), Cocoapods (pod update oder pod install) oder manuell mit den neuen aktualisierten Xcode-Tools. Die Tools sollten automatisch aktualisiert werden, wenn Sie Xcode aktualisieren. Andernfalls können Sie die in der ursprünglichen Antwort beschriebenen Schritte ausführen.

Möglicherweise müssen Sie Ihr Projekt auch bereinigen cmd + shift + k und möglicherweise Ihr Erstellungsordner cmd + option + shift + k, damit Xcode keine zwischengespeicherten Framework-Builds verwendet.

In einigen Fällen müssen Sie möglicherweise auch Ihren abgeleiteten Datenordner löschen (leicht zu finden unter Xcode-Einstellungen -> Speicherorte -> Ordner für abgeleitete Daten ( Thanks Stunner )

Für Beta-Versionen von Xcode:

Siehe Originalantwort unten und folge dann den obigen Schritten.

Ursprüngliche Antwort:

Wahrscheinlich haben Sie Ihre xcodebuild-Tools immer noch auf Xcode 9.0 eingestellt, der mit Swift 4.0 und nicht kompatibel mit Xcode 9.1 Beta Swift 4.0.1.

Checken Sie das Terminal mit dem folgenden Befehl ein:

xcodebuild -version

Oder gehen Sie einfach in die Xcode-Einstellungen -> Speicherorte und überprüfen/ändern Sie die Befehlszeilen-Tools auf Xcode 9.1. Sie sollten dann eingestellt werden.

122
Zig

Mein Problem war darauf zurückzuführen, dass ein externes Framework nicht für Swift 4.0.2 kompiliert wurde. Ich hatte diese Datei über Carthage hinzugefügt.

carthage update --platform iOS

Und dann das Projekt bereinigen cmd + shift + k und Ordner erstellen cmd + option + shift + k und das Löschen des abgeleiteten Datenordners (das Verschieben in den Papierkorb funktioniert ebenfalls) hat bei mir funktioniert.

22
Stunner

Installieren Sie die Xcode Toolchain einer bestimmten Xcode-Version, die von hier für Sie funktioniert hat.

Eine Xcode-Toolchain enthält eine Kopie des Compilers, von lldb und anderer zugehöriger Tools, die für eine zusammenhängende Entwicklungserfahrung für die Arbeit in einer bestimmten Version von Swift erforderlich sind.

Öffnen Sie die Einstellungen von Xcode, navigieren Sie zu Komponenten> Toolchains und wählen Sie die installierte Swift Toolchain aus.

Auf diese Weise können Sie die App zunächst kompilieren und ausführen.

9
Tina

Ich habe dieses Problem mit der Xcode 10 Beta behoben, die Swift 4.2. Hinzufügt. Mein Problem hatte nichts mit Karthago oder irgendwelchen externen Abhängigkeiten zu tun.

Gehe zu YourTarget > Build Settings > Swift Language Version für alle Ihre Xcode-Ziele.

Meine waren alle auf Swift 4.

Nachdem ich eine Copy Files Build Phase hinzugefügt hatte, bekam ich den Fehler

: 0: Fehler: Modul kompiliert mit Swift 4.1.2 kann vom Swift 4.2 Compiler nicht importiert werden:/Users/user/Library/Developer/Xcode/DerivedData/MyApp-faskfrihumfcdibjxisjvbfshppp/Build/Intermediates.noindex/MyApp.build/Debug/MyAppExtension.build/Objects-normal/x86_64/MyClass ~ partial.swiftmodule

Der Befehl MergeSwiftModule ist mit einem Exit-Code ungleich Null fehlgeschlagen

Ich setze dann die Swift Language Version bis Swift 4.2, wodurch der Fehler behoben wurde.

Ich bin mir nicht sicher, warum der Fehler überhaupt aufgetreten ist, da alle Ziele auf Swift 4 sollte genauso gültig sein.

6
pkamb

In meinem Fall habe ich die Betaversion von xCode 11 heruntergeladen, um SwiftUI zu testen. Wenn ich mein Projekt starte, bekomme ich "Modul kompiliert mit Swift 5.1 kann nicht von Swift 5.0.1 importiert werden Compiler: ... " Fehler.

Um dieses Problem zu beheben. Ich habe das xCode-Befehlszeilen-Tool in ein neues xCode 11-Kommentarzeilen-Tool geändert. Danach können Sie mit SwiftUI ein neues xcode-Projekt erstellen.

Xcode -> Einstellungen -> Speicherort -> XCode-Befehlszeilentool

Xcode Commend Line Tool

ich hoffe, das wird jemandem helfen, der mit neuen Freameworks testen möchte :)

4
Emre Gürses

In meinem Fall (Xcode 9.2):

Ich ging zu Xcode Preferences > Locations > Derived Data

Ich habe dann die Daten gelöscht und einen sauberen Build durchgeführt und war in Ordnung.

3
user3288482