我有一个主类,也提供了一个命名空间:
class A {
}
和通过扩展添加的嵌套类(所有这些都是为了使用单独的文件):
extension A {
class B {
}
}
我想通过扩展嵌套类(B)来为它添加功能;我试过了:
extension A.B {
}
我得到“B”不是A的成员类型“。
(我也尝试过一些不太合理的东西,但为了避免尴尬,我在这里省略了它们。阅读Swift文档和在谷歌上搜索“swift嵌套类扩展”也没有得到答案。)
你知道这是否可以实现以及如何实现吗?
最新消息:
这段代码在单个文件中(或在Playground中)可以正常工作,感谢user 3441734的试用!
当3个部分在单独的文件中时仍然不起作用,可能是Swift编译器当前实现中的一个bug。我将向苹果提交一个bug报告。
2条答案
按热度按时间idv4meu81#
看起来这个问题和SR-631有关。我也遇到过类似的问题,我猜编译器试图在定义嵌套类的文件之前处理扩展嵌套类的文件。因此,你会有这样的错误,说A没有成员B。
我找到的解决方案是转到您的目标设置,打开
Build Phases
。在
Compile Sources
节中,您应该将定义嵌套类的文件放在扩展嵌套类的文件上方。更新
fix将与Xcode 10.2一起发货
h6my8fg22#
这在我的操场上很管用,正如所料