我将Xcode升级到8.1 GM,现在我收到了SwiftyJSON的以下错误。其他导入的框架似乎有效。有没有办法强制这个在Swift 3中工作,直到SwiftyJSON升级他们的框架?我使用Carthage导入/更新框架。我也尝试将Use Legacy Swift language version
On和Off改为无效。
使用Swift 3.0编译的模块无法在Swift 3.0.1中导入: 模块/ SwiftyJSON.swiftmodule / arm64.swiftmodule
答案 0 :(得分:171)
SwiftyJson正在下载由carthage预编译。预编译下载是使用Swift 3.0版。这使编译器抱怨版本不正确。使用以下命令:
carthage update --platform iOS --no-use-binaries
SwiftyJson(以及Carthage中的所有其他框架)将使用本地版本的Swift(3.0.1)在本地编译,编译器不会再抱怨了。
答案 1 :(得分:19)
从DerivedData中删除app chache,然后重建。错误可能是固定的。
DerivedData路径如下:
~/Library/Developer/Xcode/DerivedData/
答案 2 :(得分:10)
确保您已将新的XCode 8.1 GM软件包放入“应用程序”文件夹中。当我们其中一个人运行Carthage来更新我们的依赖项时,我们遇到了这个问题,但是没有替换应用程序文件夹中的XCode旧8.0应用程序(8.1 GM在桌面上运行)。
您希望确保在终端中运行以下内容:xcrun swift -version
它返回Apple Swift version 3.0.1
。
答案 3 :(得分:9)
在终端上将默认AFNetworking
更新为新版本。
步骤1:使用以下命令将Xcode版本更新为终端上的最新版本。 Ref
Xcode
第2步:现在尝试使用carthage update命令
sudo xcode-select -switch <path/to/>Xcode.app
答案 4 :(得分:9)
只是提供最新的更新:
Carthage已于2017年2月27日发布version 0.20。
迦太基现在只使用预构建二进制文件,如果可用的预构建二进制文件兼容。
话虽如此,您不再需要使用:--no-use-binaries
来避免不兼容的预构建框架。
因此,请确保您的carthage版本大于0.20
,并且只需:
carthage update --platform iOS
答案 5 :(得分:5)
就像@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
我希望它能帮到你
答案 6 :(得分:1)
检查以下内容的输出:
xcrun swift --version
通过在终端中运行此命令,其输出应与您希望应用编译的Swift版本相匹配,因为Carthage使用此命令的输出来确定本地Swift版本。
通过运行以下命令将Xcode版本更新到终端上的最新版本:
sudo xcode-select -s /Applications/Xcode-beta.app/
通过运行以下命令,为iOS构建库并阻止Carthage下载现有的(尚未兼容的)预编译二进制文件:
carthage update --platform iOS --no-use-binaries
清理并构建
答案 7 :(得分:0)
我对库XCTest_Gherkin
有完全相同的问题,它对我有用的是:
Product
- &gt; Scheme
- &gt; XCTest-Gherkin
Product
- &gt; Build
希望它有所帮助。我正在使用Cocoapods。
答案 8 :(得分:0)
在Xcode 构建设置中,确保您的框架搜索路径包含相应的Carthage Build文件夹:
$(inherited)
$(PROJECT_DIR)/Carthage/Build/iOS