如果 Objective-C 文件包含 Project-Swift.h 的导入,如何将其导入桥接 header
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
header 而不是 header 文件,并在 header,例如@class SomeClass
, @protocol SomeProtocol
.
当您有两个 class 依赖一个 each-other 时,该解决方案与 Objective-C
解决方案相同。
例如,给定以下 header 文件:
#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 文件中,并像这样更新您的 header 文件:
@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
...
请注意,如果 objective-c class 是,您可能需要将 "Project-Swift.h" 导入放在 class header 导入之前声明实施 Swift 声明的协议之一。
所以,问题照原样进行。我有一个包含以下内容的文件:
#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
header 而不是 header 文件,并在 header,例如@class SomeClass
, @protocol SomeProtocol
.
当您有两个 class 依赖一个 each-other 时,该解决方案与 Objective-C
解决方案相同。
例如,给定以下 header 文件:
#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 文件中,并像这样更新您的 header 文件:
@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
...
请注意,如果 objective-c class 是,您可能需要将 "Project-Swift.h" 导入放在 class header 导入之前声明实施 Swift 声明的协议之一。