wake-up-neo.com

Mit Swift 4.0 kompiliertes Modul kann nicht in Swift 3.1 importiert werden

Anscheinend ist es mir gelungen, mein Projekt in Xcode 9 Beta zu erstellen, und jetzt bekomme ich nur noch den Fehler

Mit Swift 4.0 kompiliertes Modul kann nicht in Swift 3.1 importiert werden

Wenn ich das Projekt in Xcode 8 starte, sind die Module in meinem Fall Alamofire. Ich habe versucht, Xcode neu zu starten, aber es passiert keine Idee, wie dieses Problem gelöst werden kann.

16
user8118543

Sie haben zwei Möglichkeiten, die Sie tun können:

Clean das Projekt und versuchen Sie dann, Ihre Lösung zu re-build und überprüfen, ob sie funktioniert 

Wenn es nicht funktioniert und Sie immer noch die gleiche Fehlermeldung erhalten, führen Sie die folgenden Schritte aus und es sollte für Sie funktionieren:

  1. Öffne deine podfile und entferne Alamofire
  2. pod update ausführen
  3. Fügen Sie Alamofire erneut zu Ihrer podfile hinzu.
  4. pod update ausführen
  5. Wenn dies erledigt ist, clean Ihr Projekt und führen Sie es aus
24
Rashwan L

Das gleiche Problem hier aber mit Karthago. Und hier ist die Antwort:

  • rm -rf ~/Library/Caches/org.carthage.CarthageKit/DerivedData
  • löschen Sie den Ordner Carthage für das Projekt
  • Karthago aktualisieren: carthage update --platform iOS

Und voilà!

19
Dominique Vial

Ich hatte das gleiche Problem und das Bereinigen des Build-Ordners half:

Command+Option+Shift+K

oder

Product -> Option+Clean

5
Tata Grigory

Das Löschen abgeleiteter Daten funktionierte für mich, es war keine Notwendigkeit, die Pod-Installation erneut durchzuführen

2
Harsha

Fügen Sie am Ende Ihrer Pod-Datei folgende Zeilen hinzu:

post_install do |installer|
    print "Setting the default Swift_VERSION to 4.0\n"
    installer.pods_project.build_configurations.each do |config|
        config.build_settings['Swift_VERSION'] = '4.0'
    end

    installer.pods_project.targets.each do |target|
        if ['SomeTarget-iOS', 'SomeTarget-watchOS'].include? "#{target}"
            print "Setting #{target}'s Swift_VERSION to 3.0\n"
            target.build_configurations.each do |config|
                config.build_settings['Swift_VERSION'] = '3.0'
            end
        else
            print "Setting #{target}'s Swift_VERSION to Undefined (Xcode will automatically resolve)\n"
            target.build_configurations.each do |config|
                config.build_settings.delete('Swift_VERSION')
            end
        end
    end
end
0
HSAM

Dieses Problem ist mir in einem Projekt begegnet, in dem die Abhängigkeit von Carthage verwaltet wird. In meinem Fall habe ich das Befehlszeilentool nicht in xcode festgelegt (Geben Sie xcodebuild -version ein, Sie werden wissen, ob Sie es eingerichtet haben oder nicht). Als ersten Schritt gehen Sie zu XCode -> Preference -> Locations Wählen Sie den Xcode aus, den Sie als Befehlszeilenprogramm verwenden möchten. Dann können Sie die oben genannten Schritte von @Domsware ausführen, um alle Frameworks neu zu erstellen, die Sie verwenden werden.

===============================================

Das gleiche Problem hier aber mit Karthago. Und hier ist die Antwort:

rm -rf ~/Library/Caches/org.carthage.CarthageKit/DerivedData
delete the Carthage folder for the project
Update Carthage: carthage update --platform iOS

===============================================

Vergessen Sie nicht, alte Links unter 'Verknüpfte Frameworks und Bibliotheken' zu löschen und alle Frameworks aus dem Ordner/Carthage unter Ihrem Projekt auf 'Verknüpfte Frameworks und Bibliotheken' zu ziehen. 

Dann voilà!

Für diejenigen, die CocoaPods verwenden, vermute ich (Disclaimer: Dieses Problem ist in einem Projekt, in dem CocoaPods der Abhängigkeitsmanager ist) nicht aufgetreten. Die Lösung würde den folgenden Befehl in terminal ausführen:

$ pod deintegrate
$ pod clean
$ pod install

wo Sie möglicherweise das 'deintegrate' und 'clean' Tool für CocoaPod installieren müssen

$ Sudo gem install cocoapods-deintegrate cocoapods-clean

weitere Details siehe post Wie entferne ich CocoaPods aus einem Projekt?

0