Swift 无法在单独的文件中扩展嵌套结构

Swift 无法在单独的文件中扩展嵌套结构,swift,Swift,我有两份档案 母公司。swift enum Parent { ... } extension Parent { struct Child { ... } } extension Parent.Child { ... } Child.swift enum Parent { ... } extension Parent { struct Child { ... } } extension Parent.

我有两份档案

母公司。swift

enum Parent {
    ...
}
extension Parent {
    struct Child {
        ...
    }
}
extension Parent.Child {
    ...
}
Child.swift

enum Parent {
    ...
}
extension Parent {
    struct Child {
        ...
    }
}
extension Parent.Child {
    ...
}
现在我可以像这样使用child了

let child = Parent.Child()
但是,我不知道如何在单独的文件中为Child编写扩展名

儿童+分机。swift

enum Parent {
    ...
}
extension Parent {
    struct Child {
        ...
    }
}
extension Parent.Child {
    ...
}
我得到以下错误

“Child”不是“Parent”的成员类型


对于单独的文件,这可能吗?我知道如果我把parent.swift和child.swift结合起来,它会起作用。

感谢Hamish在这里给出的答案

如图所示,这是一个swift编译器错误


解决方法是手动修改“编译源代码”,确保“Child+Extension.swift”在“Child.swift”之后。

感谢Hamish的回答

如图所示,这是一个swift编译器错误


解决方法是手动修改“编译源代码”,确保“Child+Extension.swift”在“Child.swift”之后。

这是一个臭名昭著的错误:bummer,谢谢链接。我很难提出这个问题的搜索查询正如bug报告评论中所说的,你可以通过在“编译源代码”构建阶段更改文件的顺序来解决这个问题,例如,在“Child.swift”之后加上“Child+Extension.swift”。我将在这里玩一玩这是一个臭名昭著的bug:bummer,谢谢你的链接。我很难提出这个问题的搜索查询,正如bug报告评论中所说,您可以通过在“编译源代码”构建阶段更改文件的顺序来解决这个问题,例如,将“Child+Extension.swift”放在“Child.swift”之后。我将对此进行一些讨论