升级到Swift 3

它在这里! XCode 8已经发布,未来就在眼前! 好的,所以也许我反应过度,但是我们对此版本感到非常兴奋! 因此,大约三周前,我们面临着将iOS应用程序升级到Swift 3的早期挑战。 这就是我们所看到的。

通常,XCode会尽最大努力为您提供帮助。 但是,与任何升级/迁移一样,它无法解决所有问题-并且会在开始之前警告您有关此问题的详细信息(因为它与您的独特系统有关)。

首先-当然,在执行此步骤或任何与此相关的升级之前,请确保已完成所有其他更改,以便在出现问题时可以轻松地从中恢复。

尽管您必须在此过程中密切注意,但许多步骤还是非常重复或相似的。 一旦有了正确的心态,您甚至可以在其中找到一些快乐。 更不用说您可以进行的所有重构! 告诉你我们很兴奋。

因此,Apple为您提供了一个很好的参考资料,以使此过渡尽可能顺利。 但是从我们的试验中,这里有更多技巧。

  • 确保您正在使用的所有库都支持Swift 3.0。

即使大多数流行的都进行了过渡,但仍有可能仍在进行中。 在Chromatic FM中,我们正在使用CocoaPods,并且要尽早进行迁移,我们需要修改Podfile使其指向未发布的分支。 您可以转到库的GitHub页面并检查那里的分支swift-3分支很可能在那里。 如果没有,那么-如果可能的话,就应该开始-为开源社区做出贡献是一件很棒的事!

无论如何,这里是指向不同分支的重要资源。

您的Podfile如下所示:

pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git', :branch => 'dev'

分支发布后,您应该切换到更新的版本。

  • 迁移之前,请确保已提交与您无关的更改,并且项目状态为干净。 如果您的项目不受源代码管理,则至少需要在本地启动存储库。

Git是免费的,可以在这里找到。

在迁移期间,请尝试注意项目中的所有功能。 有时,迁移器不会自动尝试为您修复它们,但是存在的风险是,仍可以更改命名。

Swift为第一个参数添加了一致的标签,因此您可以更改方法名称,使其更短,更精确。 例:

func foo(bar: Int) => func foo(_ bar: Int)

  • 默认情况下,闭包现在不转义。

这是发生什么情况以及原因的详细说明。 如果您的封口@escaping了身体,请确保已将其称为@escaping

酷,对!! 并祝大家好运! 在升级过程中,我们遇到了各种各样的障碍和错误-尽管过程很简单,但使用这种东西并不总是那么容易。 但是我们在这里告诉您我们做到了,并放心最新版本中的所有改进都是值得的!