使用Swift 3.0编译的模块不能在Swift 3.0.1中导入
我升级了Xcode到8.1 GM,现在我得到了SwiftyJSON的下面的错误。 其他import的框架似乎工作。 有没有办法强制这个在Swift 3中工作,直到SwiftyJSON升级他们的框架? 我用迦太基导入/更新框架。 我也尝试改变Use Legacy Swift language version
开启和closures无济于事。
使用Swift 3.0编译的模块不能在Swift 3.0.1中导入:Modules / SwiftyJSON.swiftmodule / arm64.swiftmodule
SwiftyJson正在被迦太基预编译下载。 预编译的下载与Swift版本3.0。 这使得编译器抱怨版本不正确。 使用以下命令:
carthage update --platform iOS --no-use-binaries
SwiftyJson(以及Carthage中的所有其他框架)将使用本地版本的Swift(3.0.1)进行本地编译,编译器不会再抱怨。
从DerivedData中删除应用程序chache并重build。 错误可能是固定的。
DerivedDatapath如下所示:
~/Library/Developer/Xcode/DerivedData/
确保您已将新的XCode 8.1 GM软件包放入您的应用程序文件夹中。 当我们中的一个人运行Carthage来更新我们的依赖关系时,我们遇到了这个问题,但是并没有replace应用程序文件夹中的XCode old 8.0应用程序(8.1 GM运行在桌面上)。
你要确保当你在terminal中运行以下代码时: xcrun swift -version
它返回Apple Swift version 3.0.1
。
更新默认的Xcode
到terminal上的新工作。
步骤1:使用以下命令将Xcode版本更新到最新的terminal。 参考
sudo xcode-select -switch <path/to/>Xcode.app
第2步:现在尝试carthage更新命令
carthage update --platform iOS
只是为了给最新的更新:
迦太基在2017年2月27日发布了0.20版本 。
如果可用的预构build二进制文件兼容,迦太基现在只使用预编译二进制文件 。
这就是说,你不再需要使用: --no-use-binaries
以避免不兼容的预--no-use-binaries
框架。
所以要确保你的迦太基版本大于0.20
,只需要:
carthage update --platform iOS
就像@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
我希望这会帮助你
我和库XCTest_Gherkin
有完全一样的问题,它对我的工作是:
-
Product
– >Scheme
– >XCTest-Gherkin
-
Product
– >Build
希望能帮助到你。 我正在使用Cocoapods。
在Xcode 生成设置确保您的框架searchpath包含适当的Carthage生成文件夹:
$(inherited) $(PROJECT_DIR)/Carthage/Build/iOS