【发布时间】:2018-09-09 23:24:14
【问题描述】:
更新到Xcode 9.3(使用Swift 4.1)后,发现如下问题:
-
创建一个空项目,向其中添加一个新的 .swift 文件并创建两个新类:
class CodableOne: Codable { let some: String } class CodableTwo: Codable { var some: String }构建成功
-
向
CodableOne添加一个CodableTwo类型的新常量:class CodableOne: Codable { let some: String let another: CodableTwo } class CodableTwo: Codable { var some: String }构建成功
-
现在将类
CodableTwo移动到另一个文件(例如 ViewController.swift)构建失败。
现在有一个错误,它不会消失。 Codable 类不需要初始化器(如前面的步骤所示)。
任何关于这背后的问题以及如何解决的想法将不胜感激!
附: Xcode 9.2 中不存在问题。清理项目/构建路径,重新安装 Xcode 9.3 也无济于事。
【问题讨论】:
-
不错的发现——提交了一个错误:bugs.swift.org/browse/SR-7315
-
@Hamish - 这对我来说似乎为时过早。开启“全模块”编译。
-
@Rob 这对我来说并没有什么不同(编辑:哦,看起来这取决于“编译源”中文件的顺序)。尽管无论如何它不应该有所作为——编译器不应该在整个模块编译下给你不同的行为(它的目的是允许更积极的优化)。
-
我和@Hamish 在一起;看起来像一个编译器错误。感谢您打开它。
-
@Andrew 是的,重新排序确实有助于
Whole Module编译,这在错误报告中有所提及。请在 bugs.swift.org/browse/SR-7315 上为该问题投票
标签: swift xcode codable swift4.1 xcode9.3