Short story: Xcode 10 is set to Swift 4, but it is using Swift 4.2.
Long story: Our project is not ready for Swift 4.2, since our dependent frameworks are not Swift 4.2, yet. But, I would like to, at least, use Xcode 10.
"swift --version Apple Swift version 4.1.2 (swiftlang-902.0.54 clang-902.0.39.2)"
"Module compiled with Swift 4.1.2 cannot be imported by the Swift 4.2 compiler: .../App/Carthage/Build/iOS/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64.swiftmodule"
To me, this indicates that I have my intended Swift version (4.1.2) set correctly and Xcode is still trying to use the wrong version of Swift (4.2).
Does anyone have suggestions on how to resolve this? Am I missing something? Xcode bug?
You can also update every single Swift Package in your project at once. To do this, open the Files menu, navigate to Packages and then click Update to Latest Package Versions. Afterwards, make sure to test your project to see if everything still works, especially in projects with a lot of package dependencies.
Xcode 11 has a new “Build Libraries for Distribution” option under the “Build Options” menu you'll want to check when creating modules for use elsewhere.
I'm not positive, but my guess is that this is the reason:
I have Command Line Tools set to use Xcode 9.4.1
You have to recompile your Swift 4 dependencies using Xcode 10, because Swift is not ABI-stable, i.e. binaries compiled with different compiler versions are not compatible. And even Swift 4.0 binaries compiled with different versions of Xcode may not be compatible.
I don't have much experience with Carthage, but my guess is that you should use Xcode 10 as a command-line tool, but you have to set a different Swift language version to be used by Xcode 10. It should probably be specified in the project (in this case RealmSwift), or using environment variables, but you'll need someone else to answer with more details, I'm afraid.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With