所以,问题就是这样。我有一个包含以下内容的文件:
#import "Project-Swift.h"
我想将此文件添加到我的BridgingHeader中。 所以当我尝试编译它时,错误如下:
'Project/Project-Swift.h' file not found
#import "Project-Swift.h"
^
<unknown>:0: error: failed to import bridging header 'path/to/my/folder/Project/BridgingHeader.h'
我无法从此.h文件中删除#import "Project-Swift.h"
,因为它在那里需要。我还想在Swift中使用这个Objc文件。有什么选择?
答案 0 :(得分:1)
这可以通过在实现Project-Swift.h
文件而不是头文件中包含.m
标头,并在标头中使用前向声明来解决,例如: @class SomeClass
,@protocol SomeProtocol
。
当你有两个类彼此依赖时,解决方案与Objective-C
解决方案相同。
例如,给定以下头文件:
#import "Project-Swift.h"
@interface MyObjcClass: NSObject
@property SomeSwiftClass *aProperty;
@property id<SomeSwiftProtocol> delegate;
和.m
这样的文件
#import "MyObjClass.h"
@implementation MyObjcClass
...
,您需要将#import "Project-Swift.h"
移动到.m文件中,然后像这样更新您的头文件:
@class SomeSwiftClass;
@protocol SomeSwiftProtocol;
@interface MyObjcClass: NSObject
@property SomeSwiftClass *aProperty;
@property id<SomeSwiftProtocol> delegate;
@end
和.m
这样的文件:
#import "Project-Swift.h"
#import "MyObjClass.h"
@implementation MyObjcClass
...
请注意,您可能需要放置&#34; Project-Swift.h&#34;如果声明objective-c类实现Swift声明的协议之一,则在您的类头导入之前导入。