使用swift 3.0编译的模块无法在Swift 3.0.1中导入

时间:2016-10-25 21:54:29

标签: swift swifty-json

我将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

9 个答案:

答案 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说:

  1. 您可以使用以下命令:carthage update --platform iOS --no-use-binaries
  2. 使用以下命令:xcrun swift -version查看Swift版本
  3. 执行此操作:Xcode->preferences->locations清除派生数据并归档数据,最重要的是将命令行工具更改为“Xcode 8.1
  4. 使用以下命令:xcrun swift -version,您可以看到swift版本是3.0.1
  5. 设置Use Legacy Swift Language Version = NO
  6. 我希望它能帮到你

答案 6 :(得分:1)

  1. 如果将Xcode移至/ Applications文件夹,请移动beta / GM版本并将其命名为 Xcode-beta
  2. 检查以下内容的输出:

    xcrun swift --version

通过在终端中运行此命令,其输出应与您希望应用编译的Swift版本相匹配,因为Carthage使用此命令的输出来确定本地Swift版本。

  1. 通过运行以下命令将Xcode版本更新到终端上的最新版本:

    sudo xcode-select -s /Applications/Xcode-beta.app/

  2. 通过运行以下命令,为iOS构建库并阻止Carthage下载现有的(尚未兼容的)预编译二进制文件:

    carthage update --platform iOS --no-use-binaries

  3. 清理并构建

答案 7 :(得分:0)

我对库XCTest_Gherkin有完全相同的问题,它对我有用的是:

  1. Product - &gt; Scheme - &gt; XCTest-Gherkin
  2. Product - &gt; Build
  3. 希望它有所帮助。我正在使用Cocoapods。

答案 8 :(得分:0)

在Xcode 构建设置中,确保您的框架搜索路径包含相应的Carthage Build文件夹:

$(inherited)
$(PROJECT_DIR)/Carthage/Build/iOS