迁移到 Swift 3 时可以使用旧框架吗?

Posted

技术标签:

【中文标题】迁移到 Swift 3 时可以使用旧框架吗?【英文标题】:Can I use old frameworks when migrating to Swift 3? 【发布时间】:2016-08-28 19:22:12 【问题描述】:

我目前正在将我的项目迁移到 Swift3,因为我知道我在 ios 10 下存在一个需要修复的错误。

所以我在其中一台设备上安装了 iOS 10。 现在我无法在设备上运行我的应用,出现“Could not find developer disk image”错误。

所以我下载了最新的 Xcode8-beta。 现在我的代码无法编译 - 我首先必须将其转换为最新的语法。 因此,在修复所有非自动转换的语法问题时,我也遇到了我正在导入的框架的错误: “模块文件是由旧版本的编译器创建的” 这 - 据我了解 - 意味着这个框架需要用当前版本的 XCode 重新编译。

这意味着我必须祈祷我使用的所有框架都是最新的,或者,我也要修复这些?

根本就不能使用“已弃用”的框架吗?

这家 Apple 是不是超级严格地尽可能摆脱任何 Swift1/2 代码?

【问题讨论】:

【参考方案1】:

这意味着我必须祈祷我使用的所有框架都是最新的,或者,我也要修复这些?

根本就不能使用“已弃用”的框架吗?

这家 Apple 是不是超级严格地尽可能摆脱任何 Swift1/2 代码?

是的。 Swift 3 就是它。

我为那些不得不将他们的 C 代码转换为 swift 2,而现在 swift 3 即将推出 xD 的人感到难过

希望他们会在最终发布版本中使过渡更容易,并且不久之后所有主要框架都将更新(供您重新编译)。

【讨论】:

【参考方案2】:

您需要重新编译框架。即使是像 Carthage 这样的依赖管理器管理的框架(在每个更新命令上重新编译)仍然存在 XCode 8 Betas / Swift 3 的问题:https://github.com/Carthage/Carthage/issues/1440

【讨论】:

以上是关于迁移到 Swift 3 时可以使用旧框架吗?的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3.0 xCode 8 迁移吊舱

Swift 中的 IBM Silverpop 推送集成

从 swift 2.3 问题迁移到 swift 3.1

迁移到 Swift 3 时,Facebook 登录不会返回应用程序

NDB 集群迁移

可以使用实体框架迁移将 DateTime 字段默认为 GETDATE() 吗?