我将Xcode升级到8.1 GM,现在遇到SwiftyJSON的以下错误。其他导入的框架似乎可行。在SwiftyJSON升级其框架之前,是否有办法强迫它在Swift 3中工作?我用迦太基来导入/更新框架。我也尝试将“ Use Legacy Swift language version
打开”和“关闭” 更改为无济于事。
使用Swift 3.0编译的模块无法在Swift 3.0.1中导入:Modules / SwiftyJSON.swiftmodule / arm64.swiftmodule
Answers:
SwiftyJson正在由迦太基预编译下载。预先编译的下载是Swift 3.0版本。这使编译器抱怨版本不正确。使用以下命令:
carthage update --platform iOS --no-use-binaries
SwiftyJson(以及Carthage中的所有其他框架)将使用本地版本的Swift(3.0.1)在本地进行编译,并且编译器将不再抱怨。
Cartfile
这样我就可以打字carthage update
而无需其他开发人员知道/担心额外的标志?
从DerivedData中删除应用程序chche,然后重新构建。该错误可能已修复。
DerivedData路径如下所示:
~/Library/Developer/Xcode/DerivedData/
确保已将新的XCode 8.1 GM包放在Applications文件夹中。当我们中的一个人正在运行Carthage来更新我们的依赖项时,却没有替换应用程序文件夹中的XCode旧版8.0应用程序(8.1 GM在桌面上运行)时,我们遇到了此问题。
您需要确保在终端中运行以下命令xcrun swift -version
时返回:Apple Swift version 3.0.1
。
carthage update --platform iOS --no-use-binaries
,但仍然无法正常工作。我已经清理了项目并重新启动了Xcode,但仍然收到错误消息。我还能尝试什么吗?
Apple Swift version 3.0.1 (swiftlang-800.0.58.6 clang-800.0.42.1) Target: x86_64-apple-macosx10.9
Xcode
在终端上将默认更新为新版本对我有用。
步骤1:使用以下命令将Xcode版本更新为Terminal上的最新版本。参考
sudo xcode-select -switch <path/to/>Xcode.app
步骤2:现在尝试迦太基更新命令
carthage update --platform iOS
仅提供最新更新:
迦太基于2017年2月27日发布了0.20版本。
如果可用的预构建二进制文件兼容,则迦太基现在仅使用预构建二进制文件。
就是说,您不再需要使用:--no-use-binaries
避免不兼容的预构建框架。
因此,请确保您拥有的迦太基版本大于0.20
并且只需执行以下操作:
carthage update --platform iOS
--no-use-binaries
?迦太基应该能够检测该二进制文件是否与您的编译器版本兼容。如果不兼容,应该自动删除下载的二进制文件并在本地构建框架。
如果Xcode将beta / GM版本移动到/ Applications文件夹,并将其命名为Xcode-beta
检查以下内容的输出:
xcrun swift --version
通过在终端中运行此命令,其输出应与您希望应用编译的Swift版本相匹配,因为Carthage使用此命令的输出来确定本地Swift版本。
通过运行以下命令将Xcode版本更新到终端上的最新版本:
sudo xcode-select -s /Applications/Xcode-beta.app/
通过运行以下命令,为iOS构建库并阻止Carthage下载现有的(尚未兼容的)预编译二进制文件:
carthage update --platform iOS --no-use-binaries
清洁与建造
我对库有完全相同的问题XCTest_Gherkin
,它对我有用的是:
Product
-> Scheme
->XCTest-Gherkin
Product
-> Build
希望能帮助到你。我正在使用Cocoapods。