在 Xcode/Cocoapods 项目中更新 swift 版本的正确方法是什么?
What is the correct way to update swift version in Xcode/Cocoapods project?
我有一个 Xcode 项目,其中包含用 Swift 4.2 编写的 cocoapods (RealmSwift)。
我已将 Xcode 更新为 10.2,现在系统提示我将我的代码(和 RealmSwift 代码)转换为 Swift 5,以及一大堆警告正在为领域 Swift 生成(即 'public' 修饰符对于在 public 扩展中声明的实例方法是多余的)。
更新Cocoapods代码的正确方法是什么?我是否需要 specify/upgrade 到较新版本的 RealmSwift(我怎么知道它与 Swift 5 兼容?),或者是否有推荐的方法来抑制警告,如果我不想升级到 Swift 5?
如能提供有关处理 xcode/swift/cocoapods 更新的最佳方式的文档的任何指示,我们将不胜感激。
更新 Xcode 版本时,您应该确保不会陷入无法工作的境地。
您可以在同一个 mac 上安装两个版本的 Xcode,而不是更新 Xcode,然后通过试用新版本来使用它们。
现在,您可以通过在此处 https://developer.apple.com/download/more 下载以前的版本返回到以前的 Xcode,解压缩您要下载并复制的存档应用程序文件到 macOS.
中的应用程序文件夹
在开始升级所有内容之前,我建议的解决方案是删除 Xcode 10.2 并返回,因为您不知道所有新的 pod 更新将如何与您的代码实现一起工作安装 10.1 或 10.0(可以从之前的 link 下载)。
稍后,当您的项目构建良好且稳定时并且您想尝试升级所有内容(Xcode、Swift 和PODs),你应该首先检查你的项目是否使用你当前的 Swift 版本构建(哪个 Swift 版本是你当前设置的项目,你可以在 Target > Build Settings > Swift 语言版本).
目前您的项目尚未构建,因此请使用以前的 Xcode 版本构建您的项目,让您的生活更轻松,并确保通过升级一切您不会结束其他 PODs 的损坏功能可能改变了它们的实现与您的项目一起工作的方式。
当您的项目构建没有错误并且您想升级到新版本 Swift
- 研究您的 PODs 的最新版本以及它们支持哪个 Swift 版本(转到项目 github 页面,或在可可pods)
尝试只升级您的项目而不升级您的 PODs,如果可行,您将同时升级您的 PODs稍后,为确保您的 PODs 与适用于您的当前 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
将出现一个包含目标列表的弹出窗口,包括 pods。取消选择除项目目标、单元和 UI 测试之外的所有内容,然后按转换。等待项目构建并生成预览并应用更改。修复由新 Swift 版本要求引起的所有问题和警告。
要更新所有支持新 Swift 版本的 PODs, 您升级了项目,请使用正确的每个支持较新 Swift 版本的 POD 的 POD 版本以及不支持较新 Swift 版本的 POD 版本,您可以用此 [=15= 替换 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
我有一个 Xcode 项目,其中包含用 Swift 4.2 编写的 cocoapods (RealmSwift)。
我已将 Xcode 更新为 10.2,现在系统提示我将我的代码(和 RealmSwift 代码)转换为 Swift 5,以及一大堆警告正在为领域 Swift 生成(即 'public' 修饰符对于在 public 扩展中声明的实例方法是多余的)。
更新Cocoapods代码的正确方法是什么?我是否需要 specify/upgrade 到较新版本的 RealmSwift(我怎么知道它与 Swift 5 兼容?),或者是否有推荐的方法来抑制警告,如果我不想升级到 Swift 5?
如能提供有关处理 xcode/swift/cocoapods 更新的最佳方式的文档的任何指示,我们将不胜感激。
更新 Xcode 版本时,您应该确保不会陷入无法工作的境地。
您可以在同一个 mac 上安装两个版本的 Xcode,而不是更新 Xcode,然后通过试用新版本来使用它们。
现在,您可以通过在此处 https://developer.apple.com/download/more 下载以前的版本返回到以前的 Xcode,解压缩您要下载并复制的存档应用程序文件到 macOS.
中的应用程序文件夹在开始升级所有内容之前,我建议的解决方案是删除 Xcode 10.2 并返回,因为您不知道所有新的 pod 更新将如何与您的代码实现一起工作安装 10.1 或 10.0(可以从之前的 link 下载)。
稍后,当您的项目构建良好且稳定时并且您想尝试升级所有内容(Xcode、Swift 和PODs),你应该首先检查你的项目是否使用你当前的 Swift 版本构建(哪个 Swift 版本是你当前设置的项目,你可以在 Target > Build Settings > Swift 语言版本).
目前您的项目尚未构建,因此请使用以前的 Xcode 版本构建您的项目,让您的生活更轻松,并确保通过升级一切您不会结束其他 PODs 的损坏功能可能改变了它们的实现与您的项目一起工作的方式。
当您的项目构建没有错误并且您想升级到新版本 Swift
- 研究您的 PODs 的最新版本以及它们支持哪个 Swift 版本(转到项目 github 页面,或在可可pods)
尝试只升级您的项目而不升级您的 PODs,如果可行,您将同时升级您的 PODs稍后,为确保您的 PODs 与适用于您的当前 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
将出现一个包含目标列表的弹出窗口,包括 pods。取消选择除项目目标、单元和 UI 测试之外的所有内容,然后按转换。等待项目构建并生成预览并应用更改。修复由新 Swift 版本要求引起的所有问题和警告。要更新所有支持新 Swift 版本的 PODs, 您升级了项目,请使用正确的每个支持较新 Swift 版本的 POD 的 POD 版本以及不支持较新 Swift 版本的 POD 版本,您可以用此 [=15= 替换 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