【问题标题】:swift 2.3 to swift 3.0斯威夫特 2.3 到 斯威夫特 3.0
【发布时间】:2017-07-22 12:40:06
【问题描述】:

我有一个项目是在 xcode 7 中使用 swift 2 开始的。我现在在 xcode 8 中使用 swift 2.3。当我尝试迁移到 pro 3 时,我遇到了几个错误,没有项目。来自图书馆和我的代码。首先我更新我的 pod,然后对项目进行自动转换。我的疑问是: 如果某些库会导致错误,我可以解锁并转换吗? 在开始对话之前我需要准备一些东西吗?在我读到的关于它的文章中,我没有说任何关于它的东西。 如果你继续使用 swift 2.3,你以后会有什么问题吗?

应用程序非常大,最好的选择是什么?

【问题讨论】:

  • 我们最近进行了这样的转换。至少可以说是可怕的。我们采用了多种方法来完成它。自动转换、手动代码更改、错误修复和大量测试。
  • Mozilla 最近搞定了:mozilla-mobile.github.io/ios/firefox/swift/core/2017/02/22/… 一句话,可能又长又复杂。 Swift 4 应该允许“旧的 Swift 代码”,但我强烈建议至少使用 Swift 3,对于未来的版本也是如此。事先检查您的所有依赖项(例如,pod 是否具有 Swift 3 版本)。
  • 拥有该项目的副本是个好主意。我已经使用此选项转换了一个相对较小的应用程序,我需要一个小时来修复所有错误(许多人可以选择自动修复它们)
  • XCode 8.3 Beta 3 release notes 的摘录:Xcode 8.3 不再支持 Swift 2.3。请将包含 Swift 2.3 代码的项目迁移到 Swift 3 语法,方法是打开项目并选择 Edit > Convert > To Current Swift Syntax。
  • @breno。我也在使用项目 2.3 进行了很多次尝试,但出现了太多错误。在我的项目中,我使用了 carthages & pods。还在纠结怎么更新。你更新了代码吗?

标签: ios swift swift3


【解决方案1】:

说实话?自 2014 年以来使用 Swift 构建的任何项目都应该在理解代码的情况下完成打破每个通过 Swift 3.X 的新版本。 (我一点也不挑剔,只是实用。)今年,Swift 4.X 正在努力不破坏 Swift 3.X 代码。

因此,有了这个起点,这是我的想法:

  1. 备份工作的 Swift 2.X 应用程序并将其存档。备份那个备份。
  2. 接受在使用 3.X 之前的任何版本时应该知道的价格 - 转换是痛苦和耗时的。
  3. 尽可能不要使用第三方插件。它们会增加迁移到最新版本的复杂性。
  4. 请考虑等待 Swift 4。我根本不推荐这个,而是说要考虑大局。但请始终记住,最终您必须移植一些东西。 (好消息是 Swift 3 看起来足够稳定,可以说未来的升级(至少)不会那么痛苦。
  5. 考虑一次迁移所有内容。 (如果您在多个地方复制了黄金备份,那就更容易了。)是的,有一些方法可以将单个项目、文件等从 2.X 迁移到 3.X 和 4.X(以及可能是 Xcode 9) 使事情更容易向前发展。但如果您从 3.X 开始。
  6. 关于 Swift 2.3... 最新版本的 Xcode 不会编译/构建 Swift 2.3。以此为标志——总有一天它会在 App Store 中不再被接受。那一天可能是 2 到 3 年后(或不是),但距离 ABI 和版本兼容性的承诺适用于 Swift 3.0 已经差不多 2 年了。顺便说一句,只有后者发生了。

编辑:关于第 3 点(尽可能避免第三方插件),我发现两个链接表达了可能出现的问题:

Analyzing Third Party Libraries

Avoiding Third Party UI Libraries

【讨论】:

  • 我倾向于以“做最坏的打算,抱最好的希望”的方式回答。我的应用程序顺利进行 - 但我有三个优势。 (1) 我从最早的 Swift/Xcode 测试版开始。虽然自始至终都存在问题和变化,但我从第一天开始就做好了准备。(2) 我最糟糕的领域涉及 CoreImage 内核,而且我有一个很棒的资源,他在博客上写了需要什么。但最重要的是 - 我试图在回答中强调这一点 - 我有意识地决定尽可能使用任何第三方代码。我知道这在其他地方不实用,但恕我直言,这是最困难的事情。
  • 应该只是坚持使用 obj c
猜你喜欢
  • 2017-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-08
  • 2017-11-13
  • 2015-08-19
  • 2014-09-11
  • 1970-01-01
相关资源
最近更新 更多