从 swift 3 转换为 swift 2.3 或从 iPhone 上的应用程序获取源代码

Posted

技术标签:

【中文标题】从 swift 3 转换为 swift 2.3 或从 iPhone 上的应用程序获取源代码【英文标题】:Convert from swift 3 to swift 2.3 or get source code from app on the iPhone 【发布时间】:2016-09-24 09:04:24 【问题描述】:

我的问题是,我在 xCode 8 中转换为 Swift 3 后,在一个项目中收到 160 个错误,这周应该会进入 AppStore。

我再次下载了 Xcode 7.3 以将其修复回 swift 2.3,但 300 错误对我来说太多了。我的问题是:

我可以使用 xCode 或外部程序将其转换回来,或者我可以从我的设备上构建的应用程序中获取源代码吗?

【问题讨论】:

您不使用备份(Time Machine 或其他选项)还是使用源代码控制?您应该同时使用两者。 160错误并不多。它们最多会在几个小时内修复。你为什么要在你计划发布应用程序的同一周做出如此巨大的改变?那太傻了。 【参考方案1】:

不幸的是,代码迁移器只运行一个方向(移动到更新的版本)。您不会找到任何方法将 Swift 3 代码自动转换为早期版本。

正如@rmaddy 所指出的,这里的典型方法是简单地从源代码控制系统回滚到旧版本的源代码树。如果你没有源代码控制系统,你绝对应该这样做(git 对于简单的项目来说很容易,免费,并且与 Xcode 集成)。如果你有任何备份系统,那么你应该转向那个。 (对于您关于从设备获取源代码的具体问题,不幸的是,它不能以这种方式工作——最终在您的设备上的只是编译后的最终产品。)

如果您仍然有一堆损坏的 Swift 3 代码,那么您最好的选择很可能是继续使用 Xcode 8/Swift 3 并处理错误/警告。这是处理语言剧烈变化的正常部分,它们通常很容易“修复”并使其兼容/正确。

【讨论】:

以上是关于从 swift 3 转换为 swift 2.3 或从 iPhone 上的应用程序获取源代码的主要内容,如果未能解决你的问题,请参考以下文章

升级到 Xcode 8 并将语法从 swift 2.3 转换为 swift 3.0 后文件丢失警告

从 Swift 2.3 -> 3.2 转换时,无法将 String 类型的值转换为指定类型 NSManagedObjectContext

不能使用 String 类型的索引为 NSDictionary 类型的值下标。从 Swift 2.3 -> 3.2 转换时

将 swift 2.3 转换为 swift 3 错误

转换为 swift 2.3 后模糊使用“下标”

转换为 swift 2.3 后模糊使用“下标”