5

我有一个带有多个目标的 iOS Swift 项目。

将第一个目标转换为 Swift 5 很容易。

将第二个目标转换为 Swift 5,Xcode 10.2 尝试编译明显仅存在于第一个目标中的文件并且失败(因为它不会编译第一个目标的所有文件并抱怨未解析的标识符)。

Xcode 只编译那些在转换为 Swift 5 时属于目标的文件,我该怎么做?

如何将我的项目转换为 Swift 5?

清理 Build 文件夹并重新启动 Xcode 10.2 没有帮助。

4

4 回答 4

1

我刚刚经历了这个过程,并且能够从迁移指南最后一句中的提示中找出一个相当简单的解决方案https://swift.org/migration-guide-swift5/

当我尝试在我的项目中单独转换每个目标时,第二个目标将失败,因为与已转换的第一个目标共享代码。解决方案是创建一个新方案,其中包括需要一次性迁移的所有目标。

  1. 单击方案按钮以获取下拉菜单并选择“新方案...”

  2. 创建方案,然后在下拉列表中选择它并选择“编辑方案...”

  3. 在“构建”部分下,使用“+”按钮添加您需要转换为方案的所有目标。

  4. 使用当前的 Swift 版本构建新方案,以确认所有目标都正确构建。

  5. 使用 Edit -> Convert -> "To Current Swift Syntax..." 开始转换

在一个有 15 个目标的项目中,这对我很有用,其中包含 4.0 版中的大量共享 Swift 代码。

于 2019-05-21T18:43:05.283 回答
0

我找到了解决方法:

  1. 将项目重置为转换前的状态。
  2. 转换具有最少类的目标(不包含第一次尝试的错误消息中的文件)
  3. 将目标转换为目标,包括越来越多的文件
  4. 转换测试目标

通过这种方法,我能够转换我的项目。

(另见 Cœur 的评论,我认为他们的手动转换也可以)

于 2019-03-26T12:23:40.533 回答
0

如果我理解正确。您已经正确迁移了一个目标,而另一个目标则停留在较旧的 swift 上。我有类似的情况,点击目标,进入“构建设置”,搜索“swift”,然后手动将“Swift语言版本”更改为5。既然你已经转换了代码,它应该只是编译.

于 2020-09-01T23:03:57.087 回答
0

我不清楚问题是什么,如果您可以在http://bugreport.apple.com提交错误报告,Apple 的团队会跟进您。

请注意,您可能会在此处找到有用的迁移指南:https ://swift.org/migration-guide-swift5

于 2019-03-27T00:55:50.863 回答