Kurzgeschichte: Xcode 10 ist auf Swift 4 eingestellt, verwendet jedoch Swift 4.2.
Lange Geschichte: Unser Projekt ist noch nicht bereit für Swift 4.2, da unsere abhängigen Frameworks noch nicht Swift 4.2 sind. Aber ich möchte zumindest Xcode 10 verwenden.
"Swift --version Apple Swift Version 4.1.2 (swiftlang-902.0.54 clang-902.0.39.2)"
"Mit Swift 4.1.2 kompiliertes Modul kann vom Swift 4.2 Compiler nicht importiert werden: .../App/Carthage/Build/iOS/RealmSwift.framework/Module/RealmSwift.swiftmodule/arm64.swiftmodule"
Für mich bedeutet dies, dass ich meine beabsichtigte Swift-Version (4.1.2) richtig eingestellt habe und Xcode immer noch versucht, die falsche Version von Swift (4.2) zu verwenden.
Hat jemand Vorschläge, wie man das beheben kann? Fehlt mir etwas? Xcode-Fehler?
Ich bin nicht positiv, aber ich schätze, dass dies der Grund ist:
Ich habe Befehlszeilentools zur Verwendung von Xcode 9.4.1 eingestellt
Sie müssen Ihre Swift 4-Abhängigkeiten mit Xcode 10 erneut kompilieren, da Swift nicht ABI-stable ist, d. H. Binärdateien, die mit verschiedenen Compilerversionen kompiliert wurden, nicht kompatibel sind. Sogar Binärdateien für Swift 4.0, die mit verschiedenen Xcode-Versionen kompiliert wurden, sind möglicherweise nicht kompatibel.
Ich habe nicht viel Erfahrung mit Carthage, aber ich schätze, dass Sie Xcode 10 als Befehlszeilenprogramm verwenden sollten, aber Sie müssen eine andere Swift-Sprachversion einstellen, die von Xcode 10 verwendet werden soll. Sie sollte wahrscheinlich in angegeben werden das Projekt (in diesem Fall RealmSwift) oder die Verwendung von Umgebungsvariablen, aber Sie brauchen jemanden, der mit mehr Details zu antworten hat, fürchte ich.
Für die Verwendung von Realm mit Xcode 10 muss der Quellcode erstellt werden. In Terminal schreiben:
git clone --recursive https://github.com/realm/realm-cocoa.git
cd realm-cocoa
sh build.sh ios-Swift
sie können mehrere Swift Toolchains . download url Swift Toolchain-Download verwenden, nachdem Sie einige installiert haben version. starte deinen xcode neu, im xocde menü siehst du die toolchains option.
Wenn das Modul mit Cocoapods bezogen wurde, können Sie vom Terminal aus zu Ihrem Poddatei-Verzeichnis navigieren und Folgendes ausführen:
pod install
Dies sollte das Modul für Swift 4.2 neu kompilieren. Es hat für mich funktioniert, hoffe es funktioniert für Sie.
Ich hatte das gleiche Problem und dann wurde mir klar, dass ich Xcode 10 nicht als meine Xcode
ausgewählt hatte. Versuchen:
Sudo xcode-select -s /Applications/Xcode10.app
Wenn Sie zwischen Xcode9 und 10 wechseln, empfehle ich Folgendes: Wenn Sie von 9 auf 10 wechseln, führen Sie mv Carthage Carthage9
aus und erstellen Sie dann Carthage neu. Wenn Sie zurückschalten möchten, verschieben Sie Carthage in Carthage10
und führen Sie mv Carthage9 Carthage
aus. Dies erspart Ihnen viel Zeit beim Aufbauen.