我有一个Xcode项目,其中包含用Swift 4.2编写的cocoapods(RealmSwift)。
此后,我已将Xcode更新为10.2,现在系统提示我将我的代码(和RealmSwift代码)转换为Swift 5,并且正在为Realm Swift生成大量警告(即,“ public”修饰符对于在公共扩展中声明的实例方法。
更新Cocoapods代码的正确方法是什么?我是否需要指定/升级到RealmSwift的较新版本(以及我怎么知道它与Swift 5兼容?),或者如果我不想升级到Swift 5,是否有建议的抑制警告的方式?< / p>
任何指向有关处理xcode / swift / cocoapods更新的最佳方法的文档的指针,将不胜感激。
答案 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 ,如果可行,您以后还将升级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