将项目从Swift 4.2转移到Swift 5.0

哈Ha! 我向您展示了Antoine Van Der Lee撰写的文章“ Swift 5.0:如何迁移项目和框架”的翻译。

Swift 5.0于2019年3月发布,是ABI Swift的第一个稳定版本。 尽管许多资源介绍了Swift 5.0的新功能,但它们通常不会告诉您将项目升级到Swift 5.0所需执行的操作。

在本文中,我将介绍将现有项目升级到Swift 5.0时可以采取的步骤。

确认您的项目已被移植到Swift 4.2。
如果本文有助于说服您的产品经理计划过渡时间,我不会感到惊讶。

使用迁移助手自动迁移


Xcode建议使用迁移助手自动将您的代码更新为当前的Swift语法。 该转换将使用最新版本的Swift,该版本随已安装的Xcode一起提供。

Xcode 10.2是第一个包含Swift 5.0的版本,因此您需要使用此版本的软件。

此功能通常会为您完成艰苦的工作。 因此,我建议通过转到“ 编辑”->“转换”->“转换为当前Swift语法...”来启动代码端口。

提示: 确保仅对您的项目和框架执行此操作。 您可以跳过任何外部依赖项的转换。



依赖关系更新


最有可能的是,您有一些Swift依赖项需要更新。 许多大型的开源项目,例如Alamofire和Moya,已经开始使用Swift 5.0版本。

但是,可能并非所有依赖项都已更新。 尽管我想敦促您进行转移,然后自己提交拉取请求,但您可能需要稍等片刻,直到项目所有者自己完成。

如果您打算在转移之后对您的应用程序进行全面的全面测试,那么也有必要直接更新您的依赖项。 您的测试将直接涵盖这些更新,这可能是“双赢”。

CI环境更新


如果您正在使用Travis,Jenkins或任何其他CI平台,则还需要更新Xcode。



在Swift中使用结果


Xcode Converter仅执行基本代码更改。 它不考虑新的Result类型 ,该类型现在包含在Swift标准库中。 许多框架的代码中都包含“ Result”类型 。 这可能意味着您有很多不再需要枚举类型的数据。 但是,不要急于用依赖项中的数据替换它们:您依赖外部结构中的代码更改。

常见错误类型



您当前的“结果”类型可能只为适当情况定义了类型。

Swift 5.0中的结果还要求您确定预期的错误类型。 作为一个受人尊敬的公民,您应该根据自己的期望尝试使这种错误具体化。 但是,如果要加快迁移速度,还可以将类型设置为Swift.Error

提示: 如果您想了解有关Swift 5.0中新的Result类型的更多信息,建议您阅读本文

我们考虑了ABI的稳定性


实际上,ABI稳定性是一个单独的问题。 您可以在Swift官方博客上阅读有关此内容的更多信息

请记住,正在下载应用程序的大小 将减小 ,因为应用程序不再需要嵌入标准的Swift库!

这应该说服您的产品找到转移的时间。
如果您想进一步了解Swift 5.0,可以跳至Apple Migrating to Swift 5.0 博客文章

Source: https://habr.com/ru/post/zh-CN447098/


All Articles