迁移到 Swift 5

Xcode 10.2 配备了 Swift 迁移工具,可帮助您将项目迁移到 Swift 5。

有关先前版本的迁移指南,请参阅迁移到 Swift 4.2

迁移前准备

确保您要迁移的项目在 Swift 4 或 Swift 4.2 模式下成功构建,并且所有测试均通过。您可能需要先解决由于编译器更改而导致的错误。

强烈建议在源代码控制下管理您的项目。这将使您可以轻松查看通过迁移助手应用的更改,并在需要时放弃它们并重新尝试迁移。

您可以根据项目的实际情况,决定何时以及是否在每个目标的基础上进行迁移。虽然强烈建议迁移到 Swift 5,但这并非一个非此即彼的过程,因为 Swift 4、4.2 和 5 目标可以共存并链接在一起。

迁移助手会执行迁移构建以收集更改,使用您选择的 scheme,因此将处理 scheme 中包含的目标。要查看和修改 scheme 中包含的内容,请调用Edit Scheme… 表单,并从左侧列中选择 Build 选项卡,并确保包含所有目标及其单元测试。

如果您的项目依赖于 Carthage 或 CocoaPods 提供的其他开源项目,请查阅使用 Carthage/CocoaPods 项目部分。

Swift 迁移助手

当您首次使用 Xcode 10.2 打开项目时,您将在 Issue Navigator 中看到一个迁移机会项:单击它以激活一个表单,询问您是否要迁移。您可以稍后提醒或从菜单 Edit -> Convert -> To Current Swift Syntax… 手动调用迁移工具。

您将看到要迁移的目标列表。不包含任何 Swift 代码的目标将不会被选中。

单击Next 将会弹出 Generate Preview 表单,助手将启动迁移构建以获取源代码更改。完成后,您将看到单击“Save”后将应用的所有更改。这还将更改已迁移目标的 Swift Language Version 构建设置为 Swift 5

处理目标时可能出现问题,这将对迁移过程产生负面影响。切换到 Report Navigator 并选择添加的 Convert 条目;这是转换构建日志。检查日志中可能出现的错误。

如果您看到有关无法对目标进行代码签名的错误,请尝试从目标的构建设置中禁用代码签名。如果您看到其他错误,请提交错误报告并包含详细信息。强烈建议您尽可能附加一个说明错误迁移的项目。

Swift 5 迁移更改概览

Swift 5 对使用 4.2 版本编译的代码的影响极小。以下是您在自己的代码中可能遇到的情况

编译器

Swift 标准库

SDK

SDK 在 4.2 和 5 模式之间的源兼容性更改非常少,并且这些更改对于提高 API 的正确性是必要的。

从 Swift 4 迁移

如果您要从 Swift 4 代码迁移,另请参阅去年从迁移到 Swift 4.2的迁移工具中的迁移更改概览。

迁移后

虽然迁移工具会为您处理许多机械更改,但您可能需要进行更多手动更改,才能在应用迁移工具更改后构建项目。

即使编译正常,迁移工具提供的代码也可能不是理想的。请使用您的最佳判断力,并检查更改是否适合您的项目。

使用 Carthage/CocoaPods 项目

以下是在使用 Swift Package Manager、Carthage 或 CocoaPods 等软件包管理器迁移具有外部依赖项的项目时需要考虑的一些要点。

其他