用 swift 3.0 编译的模块无法在 Swift 3.0.1 中导入
Module compiled with swift 3.0 cannot be imported in Swift 3.0.1
我将 Xcode 升级到 8.1 GM,现在收到 SwiftyJSON 的以下错误。其他导入的框架似乎有效。有没有办法强制它在 Swift 3 中工作,直到 SwiftyJSON 升级他们的框架?我使用 Carthage 到 import/update 框架。我也试过改变 Use Legacy Swift language version
On 和 Off 无济于事。
Module compiled with Swift 3.0 cannot be imported in Swift 3.0.1:
Modules/SwiftyJSON.swiftmodule/arm64.swiftmodule
确保您已将新的 XCode 8.1 GM 包放入您的应用程序文件夹中。我们 运行 当我们中的一个人 运行ning Carthage 更新我们的依赖项时,我们 运行 陷入了这个问题,但没有替换应用程序文件夹中的 XCode 旧 8.0 应用程序(8.1 GM 是 运行关闭桌面)。
您要确保当您 运行 终端中的以下内容时:xcrun swift -version
它 returns Apple Swift version 3.0.1
。
SwiftyJson 正在下载由 carthage 预编译。预编译下载是 Swift 版本 3.0。这使得编译器抱怨版本不正确。使用以下命令:
carthage update --platform iOS --no-use-binaries
SwiftyJson(以及 Carthage 中的所有其他框架)将使用 Swift (3.0.1) 的本地版本在本地编译,编译器不会再报错了。
从 DerivedData 中删除应用程序缓存,然后重建。错误可能已修复。
像这样的 DerivedDatapath:
~/Library/Developer/Xcode/DerivedData/
我在库 XCTest_Gherkin
中遇到了完全相同的问题,它对我有用的是:
Product
-> Scheme
-> XCTest-Gherkin
Product
-> Build
希望对您有所帮助。我正在使用 Cocoapods。
正如@zirinisp 所说:
- 您可以使用以下命令:
carthage update --platform iOS --no-use-binaries
- 使用以下命令:
xcrun swift -version
查看Swift版本
- 这样做:
Xcode->preferences->locations
清除派生数据和存档数据,最重要的把命令行工具改成“Xcode 8.1
”
- 使用如下命令:
xcrun swift -version
,可以看到swift版本为3.0.1
- 设置
Use Legacy Swift Language Version = NO
希望对你有所帮助
将终端上的默认 Xcode
更新为新的对我有用。
第 1 步: 使用以下命令将 Xcode 版本更新到终端上的最新版本。 Ref
sudo xcode-select -switch <path/to/>Xcode.app
第 2 步: 现在尝试 carthage 更新命令
carthage update --platform iOS
只是为了提供最新更新:
Carthage 已于 2017 年 2 月 27 日发布version 0.20。
Carthage 现在只使用预构建二进制文件如果可用的预构建二进制文件兼容。
也就是说,您不再需要使用:--no-use-binaries
来避免不兼容的预构建框架。
因此请确保您的迦太基版本 大于 0.20
并且只需执行以下操作:
carthage update --platform iOS
在 Xcode Build Settings 中确保您的 Framework Search Paths 包含适当的 Carthage Build 文件夹:
$(inherited)
$(PROJECT_DIR)/Carthage/Build/iOS
如果 Xcode 将 beta/GM 版本移动到 /Applications 文件夹并将其命名为 Xcode-beta
检查输出:
xcrun swift --version
在终端中通过运行这个命令,它的输出应该与你希望应用程序编译的swift版本相匹配,因为迦太基使用这个命令的输出,来确定本地Swift 版本.
通过 运行 以下命令将 Xcode 版本更新到终端上的最新版本:
sudo xcode-select -s /Applications/Xcode-beta.app/
为 iOS 构建库并阻止迦太基下载现有(但不兼容)的预编译二进制文件,通过 运行 以下命令:
carthage update --platform iOS --no-use-binaries
清理并构建
我将 Xcode 升级到 8.1 GM,现在收到 SwiftyJSON 的以下错误。其他导入的框架似乎有效。有没有办法强制它在 Swift 3 中工作,直到 SwiftyJSON 升级他们的框架?我使用 Carthage 到 import/update 框架。我也试过改变 Use Legacy Swift language version
On 和 Off 无济于事。
Module compiled with Swift 3.0 cannot be imported in Swift 3.0.1: Modules/SwiftyJSON.swiftmodule/arm64.swiftmodule
确保您已将新的 XCode 8.1 GM 包放入您的应用程序文件夹中。我们 运行 当我们中的一个人 运行ning Carthage 更新我们的依赖项时,我们 运行 陷入了这个问题,但没有替换应用程序文件夹中的 XCode 旧 8.0 应用程序(8.1 GM 是 运行关闭桌面)。
您要确保当您 运行 终端中的以下内容时:xcrun swift -version
它 returns Apple Swift version 3.0.1
。
SwiftyJson 正在下载由 carthage 预编译。预编译下载是 Swift 版本 3.0。这使得编译器抱怨版本不正确。使用以下命令:
carthage update --platform iOS --no-use-binaries
SwiftyJson(以及 Carthage 中的所有其他框架)将使用 Swift (3.0.1) 的本地版本在本地编译,编译器不会再报错了。
从 DerivedData 中删除应用程序缓存,然后重建。错误可能已修复。
像这样的 DerivedDatapath:
~/Library/Developer/Xcode/DerivedData/
我在库 XCTest_Gherkin
中遇到了完全相同的问题,它对我有用的是:
Product
->Scheme
->XCTest-Gherkin
Product
->Build
希望对您有所帮助。我正在使用 Cocoapods。
正如@zirinisp 所说:
- 您可以使用以下命令:
carthage update --platform iOS --no-use-binaries
- 使用以下命令:
xcrun swift -version
查看Swift版本 - 这样做:
Xcode->preferences->locations
清除派生数据和存档数据,最重要的把命令行工具改成“Xcode 8.1
” - 使用如下命令:
xcrun swift -version
,可以看到swift版本为3.0.1 - 设置
Use Legacy Swift Language Version = NO
希望对你有所帮助
将终端上的默认 Xcode
更新为新的对我有用。
第 1 步: 使用以下命令将 Xcode 版本更新到终端上的最新版本。 Ref
sudo xcode-select -switch <path/to/>Xcode.app
第 2 步: 现在尝试 carthage 更新命令
carthage update --platform iOS
只是为了提供最新更新:
Carthage 已于 2017 年 2 月 27 日发布version 0.20。
Carthage 现在只使用预构建二进制文件如果可用的预构建二进制文件兼容。
也就是说,您不再需要使用:--no-use-binaries
来避免不兼容的预构建框架。
因此请确保您的迦太基版本 大于 0.20
并且只需执行以下操作:
carthage update --platform iOS
在 Xcode Build Settings 中确保您的 Framework Search Paths 包含适当的 Carthage Build 文件夹:
$(inherited)
$(PROJECT_DIR)/Carthage/Build/iOS
如果 Xcode 将 beta/GM 版本移动到 /Applications 文件夹并将其命名为 Xcode-beta
检查输出:
xcrun swift --version
在终端中通过运行这个命令,它的输出应该与你希望应用程序编译的swift版本相匹配,因为迦太基使用这个命令的输出,来确定本地Swift 版本.
通过 运行 以下命令将 Xcode 版本更新到终端上的最新版本:
sudo xcode-select -s /Applications/Xcode-beta.app/
为 iOS 构建库并阻止迦太基下载现有(但不兼容)的预编译二进制文件,通过 运行 以下命令:
carthage update --platform iOS --no-use-binaries
清理并构建