![](/img/trans.png)
[英]Can't import into Swift bridging header Objective-C file that imports Project-Swift.h
[英]How to import Objective-C file to bridging header if it contains an import of Project-Swift.h
因此,問題依舊。 我有一個包含以下內容的文件:
#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文件。 有什么選擇?
可以通過在實現.m
文件中而不是在頭文件中包含Project-Swift.h
頭,以及在頭中使用前向聲明(例如@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
...
請注意,如果為實現Swift聲明的協議之一而聲明了objective-c類,則可能需要將“ Project-Swift.h”導入放在類標頭導入之前。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.