使用swift和objective-c在桥接头和框架上发生命名空间冲突

时间:2017-03-22 14:14:15

标签: ios objective-c swift

我有一个混合项目,同时使用 Objective-C Swift

使用Cocoapods我导入一个框架,里面有一个名为User的类。但在我自己的项目中,我还有一个名为User的Objective-C类。

在我的Swift文件中,我想使用Objective-C User类,但也导入Cocoapod Swift框架。

我的User类是在Bridging Header文件中导入的,但是我收到了这个错误:

'User' is ambiguous for type lookup in this context

在这行代码上:

let user = DTKSession.getShared().user as! User

当我搜索此错误时,我找不到任何与我的情况有关的内容,但我认为它可能是名称空间冲突的问题,因为在导入具有其他User类的Swift框架之后,这个问题就开始了。 / p>

我读过如果我想指定Framework类,我可以编写FrameWorkName.User,但我找不到如何在桥接头上指定类。

我该怎么办?

1 个答案:

答案 0 :(得分:2)

尝试命名空间User类。它看起来像这样:

// use the class from different frameworks
let user1 = Framework1.User()
let user2 = Framework2.User()

// use the class from the main project
let user4 = User()
let user3 = MyProject.User()    // also works like this, if you want to be explicit. Here MyProject is the product module name

尝试使用第四个选项。

否则,最简单的方法是重命名您的objective-c User类。