简短描述:Xcode 10 预设使用 Swift 4,但实际却使用了 Swift 4.2。
长篇描述:我们的项目还未准备好支持 Swift 4.2 因为我们所依赖的框架还不支持 Swift 4.2。但是,我至少想使用 Xcode 10。
- 我同时安装了 Xcode 9.4.1 和 Xcode 10。
- 我已将命令行工具设置为使用 Xcode 9.4.1:
- Xcode 10 中,我已将项目设置中的 Swift 语言版本设置为 Swift 4。
- 我已在命令行界面验证了使用的 Swift 版本是 4.1.2:
"swift --version Apple Swift version 4.1.2 (swiftlang-902.0.54 clang-902.0.39.2)"
- 我已运行 carthage update。
- 我已退出 Xcode 10 并重新启动。
- 我已经进行了深度清理并删除了 Derived Data。
- 当我构建时,出现以下错误:
"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"
对我来说,这表明我已经正确设置了我的预期Swift版本(4.1.2),而Xcode仍在尝试使用错误版本的Swift(4.2)。
有人有解决方法吗?我是否遗漏了什么?是Xcode的bug吗?
SWIFT_VERSION
构建设置来设置它。如果我没记错的话,也可以将其作为环境变量传递给xcodebuild。理论上,Carthage应该从项目中获取它。我不知道是否有任何方法强制使用特定的Swift版本。如果您只是使用Xcode 10工具链进行编译会发生什么?它会失败吗?它会产生什么错误?在RealmSwift项目(master
分支)中看起来实际上是设置为使用Swift 3 :) - FreeNickname