【问题标题】:How to fix "SWIFT_VERSION '3.0' is unsupported, supported versions are: 4.0, 4.2, 5.0" error in Xcode 10.2?如何修复 Xcode 10.2 中的“不支持 SWIFT_VERSION '3.0',支持的版本是:4.0、4.2、5.0”错误?
【发布时间】:2019-08-17 08:38:50
【问题描述】:

我正在尝试从应用程序下载运行,尝试在 Xcode 中打开并出现错误:

" 显示最近的消息
:-1: SWIFT_VERSION '3.0' 不受支持,支持的版本是:4.0、4.2、5.0。 (在目标“SimpleWeather”中)”

【问题讨论】:

  • 更新内容。就 Swift 的进化速度而言,3.0 已经相当老了
  • 我正在使用 Xcode 10.2 并尝试打开旧 3.0,但由于出现错误而无法运行程序。
  • 在 Xcode 10.1 中打开并更新项目。磁盘上可能有多个不同版本的 Xcode。
  • Xcode 的更新版本 ;(
  • 天啊!!!我花了三个小时下载 XCode 10.2 才发现我不能再构建我的应用程序了。我没有 XCode 10.1 的备份!这只是苹果应该为我付出的疯狂。

标签: xcode swift3 xcode10.2


【解决方案1】:

我们可以使用安装 Cocoapods 的安装后挂钩自动执行此操作。

将此添加到您的Podfile:

    ..
    pod 'Alamofire' # Just an example for the last pod in list.
    post_install do |installer|
        installer.pods_project.targets.each do |target|
            target.build_configurations.each do |config|
                config.build_settings['SWIFT_VERSION'] = '5.0'
            end
        end
    end
end

如果你有很多 Pods 作为依赖项,这个钩子会很有帮助,因为我们不需要手动更改每个 pod 的构建设置。但是,如果某些 pod 尚不支持 Swift 5,请务必按照前面的答案中所述手动将它们更改为 4.0 或 4.2。

【讨论】:

    【解决方案2】:

    它非常简单。只需按照这 2 个步骤即可解决此问题。

    在第 1 步中:

    • 解决构建失败问题。
    • 将 Swift 3.0 转换为 Swift 4.0

    在第 2 步中:

    • 解决所有其他警告
    • 然后将 Swift 4.0 隐蔽到 Swift 5.0

    【讨论】:

      【解决方案3】:

      请确保您的 pod 版本与您的 swift 版本兼容。当我安装了错误版本的 pod(swift 2.3)时,我遇到了这个问题,但我使用的是 swift 4

      【讨论】:

        【解决方案4】:
        1. 在编辑器中打开 MyProject.xcodeproj/project.pbxproj(例如 Sublime)

        1. 重命名所有 SWIFT_VERSION = 3.0;重命名所有 SWIFT_VERSION = 5.0;

        【讨论】:

          【解决方案5】:

          我打开了文件MyProject.xcodeproj (使用 VSCode 编辑器)

          我发现了一些行

          SWIFT_VERSION = 3.0;

          (大约在第 400 行,上面写着/* Begin XCBuildConfiguration section */)

          修改为 SWIFT_VERSION = 5.0 或其他。 之后我就可以构建并运行该项目了。

          【讨论】:

            【解决方案6】:

            搜索 Swift 并双击,然后更改每个有问题的版本。

            【讨论】:

            • 不错的提示!或者为什么不直接输入swift_version 以获得更简洁的列表:)
            【解决方案7】:

            如果您像我一样有多个 pod 文件,并且在 SWIFT_Version = 3.0 时找不到 pod,请尝试搜索栏

            【讨论】:

              【解决方案8】:

              我是 iOS 开发新手。在我遵循上述所有答案后,我仍然遇到同样的错误。我使用的是 Xcode 11,我从 Apple Developer 网站下载了“FoodTracker”示例,在尝试构建它后我得到了同样的错误。发现项目文件内容vim后,项目有几个参考Swift语言版本的设置。因此,我首先将“Project > FoodTracker”设置为 5.0,还将“TARGETS > FoodTracker”和“TARGETS > FoodTrackerTests” Swift 语言版本设置为 5.0。希望对您有所帮助。

              Setting Swift Language Version on Project and ALL Targets

              【讨论】:

                【解决方案9】:
                1. 选择项目
                2. 选择构建设置选项卡
                3. 选择 Swift 编译器语言选项

                【讨论】:

                  【解决方案10】:

                  ********** 最简单的方法:**********

                  1.点击左侧栏中的POD。

                  2.在中心栏中选择您想要的 pod,然后导航到右上角面板中的“构建设置”。

                  3.然后搜索“Swift Language Version”并更改为已知版本。

                  【讨论】:

                    【解决方案11】:
                    1. 看看这个:
                      1. 点击项目名称
                      2. 点击目标
                      3. 点击构建设置
                      4. 在 Swift 语言版本中:选择 Swift 4

                    【讨论】:

                      【解决方案12】:

                      1) 在 podfile 上更改 pod 的版本(因为库写了旧的 swift 版本)

                      2) 终端上的“pod install”

                      【讨论】:

                        【解决方案13】:

                        我按照此页面上的说明操作,但错误未解决。终于进去了

                        $ vim MyProject.xcodeproj/project.pbxproj
                        

                        并找到了两个实例,其中

                        SWIFT_VERSION = 3.0;
                        

                        仍在被引用。我将它们更改为 5.0 并且错误消失了。不知道为什么那两个还在。

                        【讨论】:

                        • 我使用 Apple's guide 从 Swift 3.0 迁移到 5.0,但是助手没有显示任何建议。一旦我在上面的答案中修改了这两行,它就提示我立即迁移。感谢您分享此解决方案@Forrest!
                        • 这对我也有用。在上面上课,示例项目的版本错误。
                        • 加一个,它有效!进行此更改后,我的代码中只有一个警告。
                        • 看准了!我的在/* Release */ 和/* Debug */
                        • 这太棒了!
                        【解决方案14】:

                        我在开发 Cocoapod 时遇到了这个问题。我的仓库中有一个旧的.swift-version 文件,它指定了 Swift 3.0。

                        运行pod lib lint --verbose 引导我得到这个有用的回复:

                        请删除现在已弃用的 .swift-version 文件,并仅在您的 podspec 中使用 swift_version 属性。

                        我删除了该文件并将spec.swift_version = '5.0' 添加到我的 podspec 文件中以解决问题。

                        【讨论】:

                          【解决方案15】:

                          对于 Xcode 10.1,选择您的 Pods 文件

                          -> 转到构建设置 -> 选择您的 Pod -> 搜索“Swift” -> 导航到“Swift 语言版本” -> 设置为所需的语言版本。

                          【讨论】:

                          • 如果 Swift 版本是 3.x 并且您的 Xcode 版本高于 10.2,则此解决方案不起作用
                          【解决方案16】:

                          select pod like per image 并更改 swift 语言版本 这可以为您节省一天时间

                          【讨论】:

                            【解决方案17】:

                            在项目中选择目标'SimpleWeather'并更改语言版本目标->构建设置-> Swift编译器语言->选择5、4.2等

                            【讨论】:

                              【解决方案18】:

                              在您的情况下,该应用程序可能具有旧的 Swift 版本代码,例如 Swift 3.0。在 Xcode 10.2 版本的发布中已经推出了 Swift 5.0 版本。 Xcode 10.2 不支持 Swift 3.0 版本的编译器。您可以从Build Settings -> Swift Compiler - Language -> Swift Language Version -> Change it to Swift 5 更改编译器。如果您的代码与该语言版本兼容,那么它将运行代码而不会出错。

                              但是,Swift 3 兼容模式将不支持 斯威夫特 5 编译器。 Swift 4.2 是最后一个支持的 Swift 版本 斯威夫特 3 模式。两个表面都有重要的变化 语言及其在版本中的实现内部 遵循 Swift 3,这将是未来(和持久)的基础 源和二进制稳定性。

                              更多详情请参考以下链接。 https://developer.apple.com/documentation/xcode_release_notes/xcode_10_2_release_notes/swift_5_release_notes_for_xcode_10_2

                              如果您真的希望运行具有较旧 Swift 版本代码的应用程序,则必须使用较旧版本的 Xcode。您可以使用 Xcode 10.1 版本,它的编译器支持 Swift 3.0 版本。

                              另一种替代方法是将旧的 Swift 代码迁移到新版本的 Swift 版本。您可以在 Xcode 10.1 版本中将 Swift 3.0 迁移到 Swift 4.0。

                              有关迁移指南,请参阅此 https://swift.org/migration-guide-swift4/

                              【讨论】:

                                猜你喜欢
                                • 2019-10-19
                                • 1970-01-01
                                • 2023-03-24
                                • 2019-10-20
                                • 1970-01-01
                                • 2019-08-20
                                • 1970-01-01
                                • 2021-12-16
                                相关资源
                                最近更新 更多