在Xcode / Cocoapods项目中更新Swift版本的正确方法是什么?

时间:2019-04-14 17:54:38

标签: swift xcode realm cocoapods

我有一个Xcode项目,其中包含用Swift 4.2编写的cocoapods(RealmSwift)。

此后,我已将Xcode更新为10.2,现在系统提示我将我的代码(和RealmSwift代码)转换为Swift 5,并且正在为Realm Swift生成大量警告(即,“ public”修饰符对于在公共扩展中声明的实例方法。

更新Cocoapods代码的正确方法是什么?我是否需要指定/升级到RealmSwift的较新版本(以及我怎么知道它与Swift 5兼容?),或者如果我不想升级到Swift 5,是否有建议的抑制警告的方式?< / p>

任何指向有关处理xco​​de / swift / cocoapods更新的最佳方法的文档的指针,将不胜感激。

1 个答案:

答案 0 :(得分:4)

在更新Xcode版本时,您应该确保不会遇到无法工作的情况。

您可以只在同一台Mac上安装两个版本的Xcode,然后通过试用新版本来使用这两个版本,而不是更新Xcode。

现在,您可以在此处https://developer.apple.com/download/more下载以前的版本,以返回到以前的Xcode ,解压缩要下载的档案并将其复制到macOS的Applications文件夹中

我建议您在开始升级所有内容之前作为解决方案,因为您不知道所有新的pod更新将如何与您的代码实现一起使用,是删除Xcode 10.2并返回安装10.1或10.0(可以从上一个链接下载它们。

稍后,当您的项目构建良好且稳定时,并且您想尝试升级所有内容(Xcode,Swift和POD),则应首先检查您的项目是否使用您当前的Swift版本(该版本是您当前设置的项目,可以在“目标”>“构建设置”>“ Swift语言版本”下找到。)

目前您的项目尚未构建,因此请使用以前的Xcode版本来构建项目,以使您的生活更轻松,并确保通过升级所有内容,最终不会导致其他POD破坏功能可能会改变其实现与您的项目一起工作的方式。

当您的项目构建没有错误并且您想要升级到Swift的新版本

  • 研究POD的最新版本及其支持的Swift版本(在项目github页面或cocoapods中)
  • 尝试仅升级项目而不升级POD ,如果可行,您以后还将升级POD,以确保POD与当前的Swift版本保持一致。为您工作(例如,现在Swift 3.2 ),您可以将此代码段添加到Podfile中:

    post_install do |installer|
      installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
          config.build_settings['SWIFT_VERSION'] = '3.2'
        end
      end
    end
    
  • 要将您的项目仅转换为较新的Swift版本,请转到Edit -> Convert -> Convert to current swift syntax。将弹出一个弹出窗口,其中包含目标(包括吊舱)。取消选择除项目目标,单元测试和UI测试以外的所有内容,然后按Convert。等待项目生成并生成预览并应用更改。解决新的Swift版本要求所产生的所有问题和警告。

  • 要更新升级了项目的所有支持新Swift版本的POD ,请为每个支持新Swift版本的POD使用正确的POD版本,一个不支持较新的Swift版本的人,您可以以此替换Podfile上的代码段

    post_install do |installer|
        installer.pods_project.targets.each do |target|
            if ['UnsupportedPod1', 'RxSwift', 'RxCocoa'].include? target.name
                target.build_configurations.each do |config|
                    config.build_settings['SWIFT_VERSION'] = '3.2'
                end
            end
        end
    end