【问题标题】:“Use Legacy Swift Language Version” (SWIFT_VERSION) is required to be configured correctly for targets which use Swift."需要为使用 Swift 的目标正确配置“使用旧版 Swift 语言版本”(SWIFT_VERSION)。”
【发布时间】:2017-04-30 16:26:05
【问题描述】:

自从我更新到 Xcode 8.2(GM 种子,来自 App Store)后,我一直遇到以下错误:

Use Legacy Swift Language Version” (SWIFT_VERSION) 必须是 为使用 Swift 的目标正确配置。使用 [编辑 > Convert > To Current Swift Syntax…] 菜单选择 Swift 版本或 使用构建设置编辑器直接配置构建设置。

所以我去了我的目标的构建设置,并搜索SWIFT_VERSION,看看我错在哪里。但是,我惊讶地发现它已经设置为 No

我该如何解决这个问题?

【问题讨论】:

  • 在后台,“使用旧版 Swift 语言版本”是 SWIFT_VERSION 键入 buildSettings。在 XCode 8.1 中将选项设置为“否”意味着 SWIFT_VERSION = 3.0.1,在 XCode 8.2 中它只是 SWIFT_VERSION = 3.0。因此产生了“有趣”的副作用。
  • 以下所有回复中遗漏了一个关键点,即 XCode 8.2 最高支持 Swift3,而 Swift2.x 作为“旧版 Swift 语言版本”。直到 XCode 9(也可能是 8.3)才引入了 Swift4。那时,UI 更改为显示 SWIFT_VERSION。因此,所有仅搜索“SWIFT_VERSION”的答案都是错误的。确实,您可以在 project.pbxproj 文件中搜索它,因为即使在较旧的项目中,该变量也存在于文件中。我花了一段时间才弄明白。

标签: swift xcode compiler-errors build-error build-settings


【解决方案1】:

Xcode 8.3.2 转到:

构建设置 > Swift 编译器 - Viersion > 更改 Swift 版本

....有效

【讨论】:

    【解决方案2】:

    以防万一其他人遇到我刚刚遇到的同样问题。

    我有一个应用程序已准备好发布到应用程序商店,但我正在等待,同时我更新到 Xcode 9 测试版并且正在搞乱,更改了我的应用程序中的一些内容。我去把它上传到应用商店,它说你不能使用 beta 版本来上传,所以我回到 Xcode 8 但它开始给我“Swift Language Version”(SWIFT_VERSION)......”错误。

    我的解决方法

    在您的项目 Build Settings > Swift Compiler Version > 我不得不将它从 Swift 4(currently not supported) 更改为 Swift 3

    问题解决了:)

    【讨论】:

      【解决方案3】:

      请在 pod alamofire 中选择目标,搜索“SWIFT_VERSION”,选择 swift3.

      【讨论】:

        【解决方案4】:

        Xcode 8 似乎错误地显示了一个不存在的(“幻影”​​,如果你愿意的话)No。对此有一个简单的解决方法:

        1. 点击SWIFT_VERSION旁边的小箭头来切换下拉列表。
        2. DebugRelease 的值设置为 Yes
        3. DebugRelease 的值设置回 No

        下图是在将 Debug 设置为 No 之后拍摄的。 Xcode 显示 DebugRelease 都设置为 No,但是 SWIFT_VERSION读取<Multiple Values>

        由此,我只能断定这是一个bug;并且某些值(或更可能是 null 值)被错误地表示为 No

        【讨论】:

        • 我使用的是 Xcode 9.3,但在构建设置中找不到任何“Swift 编译器”或“Swift 版本”...你有什么线索吗?
        【解决方案5】:

        我昨天遇到了同样的问题。修复步骤:

        1. 构建设置 -> 搜索 swift,选择使用旧的 swift 语言版本

        2. 将“否”切换为“是”-> 构建。你会得到更多的错误。

        3. 返回将“是”切换为“否”。构建 -> 成功!

        有时苹果会让我们变得如此疯狂:)

        全部完成。

        【讨论】:

          【解决方案6】:

          幻影没有答案将起作用。 XCode 被破坏的真正原因是因为 Apple 的 XCode “使用旧设置”实际上是一个 Swift 版本号。在 XCode 8.1 中,“否”转换为 3.0.1,在 XCode 8.2 中,“否”转换为 3.0。所以你需要将版本切换到 Swift 3.0 。这是有道理的。我猜是 XCode 8.1 中的一个错误。

          我的 git 差异:

          --- a/ios/myapp.xcodeproj/project.pbxproj
          +++ b/ios/myapp.xcodeproj/project.pbxproj
          @@ -1757,7 +1757,7 @@
                                          SDKROOT = iphoneos;
                                          SKIP_INSTALL = YES;
                                          SWIFT_OPTIMIZATION_LEVEL = "-Onone";
          -                               SWIFT_VERSION = 3.0.1;
          +                               SWIFT_VERSION = 3.0;
                                          TARGETED_DEVICE_FAMILY = "1,2";
                                  };
                                  name = Debug;
          

          我看到上面的评论有相同的答案,只是认为它需要更加突出。

          【讨论】:

            【解决方案7】:

            我也遇到过“Use Legacy Swift Language Version..”的问题,我已经通过设置版本解决了,解决问题的技巧是:

            1. 当你打开目标时,会出现“Convert to Current Swift Syntax”的提示,你应该选择“Later”,接下来还有另一个提示,仍然选择“Later”。
            2. 如果您的目标已经添加了 CocoaPods,请在您的 podFile 末尾添加该代码:

              post_install 做 |安装程序|安装程序.pods_project.targets.each 做|目标| target.build_configurations.each 做 |配置| config.build_settings['SWIFT_VERSION'] = '3.0' 结束结束结束

            添加该代码后,请更新 cocoaPods。

            1. 点击pod文件,会显示所有第三方库列表。找出每个库的“Build Setting”,并搜索“Use Legacy Swift Language Version”类型,将其值设置为YES。
            2. 可能会有一些警告或错误,来自版本上传,您可以通过红圈提示更正。

            -----如果你不添加cocoaPods,你可以设置targets的版本为YES(TARGETS->Build Setting-->Use Legacy Swift Language Version-->YES) 希望对你有帮助。

            【讨论】:

              猜你喜欢
              • 2017-08-30
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-03-02
              • 1970-01-01
              • 1970-01-01
              • 2017-01-29
              • 1970-01-01
              相关资源
              最近更新 更多