我在我的Swift
项目中混合Objective-C
和iOS
代码,我有一个Objective-C
课程(让我们称之为&# 34; ObjCClass"),我使用Swift
类,所以我将这个导入行添加到.h文件中:
#import "MyApp-Swift.h"
另一方面,我需要使用" ObjCClass"某个Swift
课程中的课程(让我们说" SwiftClass"),所以在" MyApp-Bridging-Header.h"文件我试图添加:
#import "ObjCClass.h"
但编译器给了我两个错误,一个在#34; MyApp-Bridging-Header.h"文件,以及" ObjCClass.h"的#import "MyApp-Swift.h"
中的另一个文件。文件。最后,错误显示failed to import bridging header
。
我对Swift
我的Objective-C
不使用Swift
代码的课程有任何疑问,我是否尝试做一些不可能的事情?我的意思是,是否不允许在Swift
类中使用Objective-C
类,而后者又会使用另一个Swift
类?如果这可能,我怎么能解决这个问题呢?
谢谢
答案 0 :(得分:0)
我不了解您的所有问题,但您可以在Swift项目中使用Objective-c类,如下所示:
你的" Bridging-Header.h"文件可能如下所示:
a1.getA() == a2.getA()
你可以在Objective-c项目中使用Swift类:
添加@class yourClass;在你的.h
#import <yourFramework>
#import "yourClass.h"
添加#import&#34; yourClass-Swift.h&#34 ;;在yout .m
答案 1 :(得分:0)
此问题与在ClassB.h中尝试#import ClassA的头文件时相同,同时在ClassA.h中导入ClassB的头文件 - 您无法进行循环导入。
这里的解决方案与纯粹的Objective-C项目相同。将您的#import "MyApp-Swift.h"
移到ObjCClass.m的顶部,而不是.h。同时,如果你需要在ObjCClass的头文件中引用任何Swift类,而不仅仅是在.m中,那么在ObjCClass.h中包含那些带有@class
声明的类。
如果您执行上述操作,您的编译器问题将会消失。您无需更改桥接标题中的任何内容。