【问题标题】:Swift 3.1.1 compile error: unknown key 'SwiftImportAsNonGeneric'Swift 3.1.1 编译错误:未知键 'SwiftImportAsNonGeneric'
【发布时间】:2017-10-19 15:38:17
【问题描述】:

升级到 Xcode 9 一段时间后,我发现我不再能够使用 Swift 3.1.1 快照(我已通过 swiftenv 安装)构建基于 Kitura 的项目。

当我运行 swift build 时,我会在构建过程中获得一些时间:

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.apinotes:8:28: error: unknown key 'SwiftImportAsNonGeneric'
  SwiftImportAsNonGeneric: true
                           ^
<unknown>:0: error: could not build Objective-C module 'Foundation'

似乎 Swift 和 Xcode 之间存在依赖关系,并且 Xcode 9 不再与 Swift 3.1.1(或更早版本)快照完全兼容。我相信这可能是因为我的项目使用了 Foundation,而 Mac 上的 Foundation 是作为 Xcode 的一部分提供的,而在 Linux 上它是 Swift 快照的一部分(通过swift-corelibs-foundation)。

【问题讨论】:

    标签: swift xcode9


    【解决方案1】:

    我确实找到了 a 解决此问题的方法:如果我保留一份 Xcode 8.3.3 的副本(例如在 /Applications/Xcode8.3.3.app 中),那么我可以使用 sudo xcode-select -s /Applications/Xcode&lt;version&gt;.app/Contents/Developer 来选择合适的在使用 SPM 构建之前,我可以在同一系统上构建 Swift 3.1.1 和 4.0 项目。

    但是,这感觉有点笨拙。每次我使用“其他”Swift 版本构建项目时,我都必须确保运行xcode-select,否则构建将失败。在这种情况下,拥有多个版本的 Xcode 是正确的解决方案,还是我错过了 Xcode 9 的技巧?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-06
      • 1970-01-01
      • 1970-01-01
      • 2012-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多