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

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

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

我的User类已导入桥接头文件中,但是出现此错误:

'User' is ambiguous for type lookup in this context

在这行代码上:
let user = DTKSession.getShared().user as! User

当我搜索此错误时,找不到与我的情况有关的任何内容,但我认为可能与名称空间冲突有关,因为此问题是在导入具有另一个User类的Swift Framework之后开始的。

我读到如果要指定Framework类,可以编写FrameWorkName.User,但是找不到在桥接头上指定类的方法。

我能做什么?

最佳答案

尝试命名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类。

关于ios - 使用Swift和Objective-C桥接标题和框架时发生命名空间冲突,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42954183/

10-11 22:32
查看更多