Nach dem Update auf Xcode 9 habe ich versucht, eines meiner Projekte zu erstellen.
Ich benutze den FacebookLogin Pod. Ich habe einen Compilerfehler in FacebookLogin / LoginButton.swift
@testable import FacebookCore
❌ Module compiled with Swift 3.1 cannot be imported in Swift 4.0
In den Build-Einstellungen meines Ziels ist die Swift-Sprachversion auf Swift 3.2 eingestellt .
Ich muss wohl warten, bis Facebook seinen Pod aktualisiert hat. Oder irgendein anderer Vorschlag?
Vielen Dank !
Antworten:
Aktualisieren:
Die Lösung wurde auch in Swift 5 und Xcode 11 getestet und funktioniert.
Original:
Ich möchte hinzufügen, dass Sie, wenn Sie Karthago zum Kompilieren eines Moduls in Swift 3.2 verwenden, zu einem Terminal gehen und Folgendes ausführen sollten:
sudo xcode-select --switch /Applications/Xcode-beta.app/Contents/Developer
Um die Xcode 9-Befehlszeilentools zu verwenden, können Sie Folgendes ausführen:
carthage update NameOfTheLibrary --platform iOS --no-use-binaries
Dadurch wird die Bibliothek mit Ihren aktuellen Befehlszeilentools kompiliert. Es kann etwas langsam sein, aber jetzt sollte das Projekt erstellt werden.
Hinweis
Führen Sie einfach Folgendes aus, um Ihre stabilen Xcode-Befehlszeilentools wiederherzustellen und zu verwenden:
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
quelle
carthage update NameOfTheLibrary --platform iOS --no-use-binaries
, um die Bibliotheken zu aktualisieren, und Sie sollten in Ordnung seinXcode 9 wird mit einem Swift 4-Compiler geliefert, der sowohl Swift 3.2 als auch Swift 4 versteht. Sie können sogar die beiden Versionen mischen und anpassen. Andere Versionen werden leider nicht unterstützt.
Selbst wenn Sie Ihre Sprache auf Swift 3.2 einstellen, wird der Swift 4-Compiler verwendet.
Wenn Sie Cocoapods verwenden, können Sie diese am Ende Ihrer Pod-Datei hinzufügen, um die Pods zur Verwendung von Swift 3.2 oder 4.0 zu zwingen:
post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['SWIFT_VERSION'] = '3.2' end end end
Alternativ können Sie die Dateien aus dem Pod vorübergehend direkt in Ihr Projekt einfügen, bis FacebookLogin auf Swift 3.2 oder 4 aktualisiert wird.
Hinweis: Basierend auf Matts Feedback bearbeitet
quelle
Vielleicht können Sie das Ziel reinigen, bevor Sie es erstellen. Es funktioniert gut für mich.
quelle
Ich bin auf Xcode 9 Beta 3 auf dasselbe Problem gestoßen, das auf 'Alamofire' zeigte, und habe ein paar verschiedene Lösungen ausprobiert. Die einfachste, die ich gefunden habe, ist
1. CMD+SHIFT+K to clean the build 2. Restart Xcode 9 <-- make sure you do this step, that's critical. `
quelle
Durch Ausführen eines "Bereinigungsordners" und Neustarten von Xcode 9 wurde der Fehler für mich behoben. Außerdem hat der Fehler die App nicht daran gehindert, auf meinem Gerät oder dem Simulator ausgeführt zu werden.
quelle
gehe zum xcode DerivedData-Verzeichnis, entferne dann alle darin enthaltenen Dateien und kompiliere dein Projekt neu. es funktioniert für mich.
Das Standardverzeichnis von DerivedData lautet: ~ / Library / Developer / Xcode / DerivedData.
quelle
Wenn Sie Karthago verwenden , öffnen Sie das Terminal und;
Wenn Sie Pod verwenden , öffnen Sie das Terminal und;
(Auch wenn Sie nicht im Pod arbeiten, können Sie SWIFT_VERSION in der Poddatei ändern. Beispiel:
config.build_settings['SWIFT_VERSION'] = '3.2'
)
Nach;
Öffnen Sie Xcode und verwenden Sie;
Command+Option+Shift+K
quelle
config.build_settings
Teil?Für mich geht das.
1.Reinigen Sie Ihr Projekt in Xcode 8
2.Erstellen oder führen Sie Ihr Projekt in Xcode 9 aus
quelle
Ich habe das Projekt in Xcode 9 bereinigt und dann die App ausgeführt, es funktioniert.
quelle
Ich hatte das gleiche Problem mit Xcode 9 GM und dies löste mein Problem: Entfernen Sie es aus dem Projekt und ziehen Sie es erneut in "Embedded Binaries".
quelle
pod update
aber ohne Ergebnis ausprobiert . Am Ende fügte ich das Framework direkt zu meinem Projekt hinzu und fügte es meinen eingebetteten Binärdateien hinzu, die funktioniertenBereinigungsordner bereinigen
Cmd + option + shift + K
quelle
ich habe
pod 'FBSDKCoreKit' pod 'FBSDKLoginKit' pod 'FBSDKShareKit'
In meinem Projekt und
import FBSDKLoginKit
nach dem Reinigen des Ziels hatte ich kein ProblemDa der von Ihnen verwendete Pod schnell ist und ein Beta-Pod ist, ist es wahrscheinlich, dass Sie Probleme mit dem Swift 4-Compiler haben. Sie sollten vorerst die Objective-C-Version des Pods verwenden
quelle
Wenn Sie von Pod verwenden:
Podfile
Kommentar FacebookLogin PodPodfile
Kommentar FacebookLogin Podquelle
Für meinen Fall verwies der eigentliche Pod auf eine statische Zip-Datei mit vorgefertigten Binärdateien, die auf Swift 3.1 abzielen. Die einzige Lösung besteht darin, das Framework mit der Quelle von xcode 9 neu zu erstellen.
https://github.com/AudioKit/AudioKit/issues/980
quelle