我在我的一个名为 Foo
的 Swift 文件中有一个枚举。
其中一个名为 NameA
的 Cocoapods 也具有名称为 Foo
的相同枚举(public enum
,不在任何类中)。
该模块还有一个与其框架 NameA
同名的类。
如果我尝试像这样在 NameA
模块中引用 Foo
:
NameA.Foo
它不起作用,因为编译器认为我指的是类 NameA
,而不是模块 NameA
。
此处发布的解决方法对我也不起作用 Swift namespace conflict
这似乎是 swift 中报告的错误: https://bugs.swift.org/browse/SR-898
最佳答案
不要
导入 NameA
。相反,
import enum NameA.Foo
(注意关键字“enum”,也可用于“struct”或“class”或“func”)引用
Foo
(您的枚举)或NameA.Foo
(他们的枚举)。
如果您需要在与 NameA.Foo
相同的文件中引用 NameA
:
- 为您的“包装器”类型创建一个新文件:
导入名称A
类型别名 NameAWrapper = NameA
- 在您的其他文件中将类
NameA
引用为NameAWrapper
,而无需直接导入模块。
这是受此解决方法(您链接到的)的启发,但根据您的情况稍作修改:https://stackoverflow.com/a/26774102/358806
关于ios - 命名空间冲突与 cocoa pod 模块 swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39710620/