我有一个包含几个文件的新Swift项目,我需要添加一些Objc代码。
在中Build Settings
,我Objective-C Generated Interface Header Name
是MyProject-Swift.h
Product Module Name
而且Product Name
都是MyProject。
我的Objective-C Bridging Header
是MyProject/MyProject-Bridging-Header.h
我的内容Bridging Header
是:
#ifndef MyProject_Bridging_Header_h
#define MyProject_Bridging_Header_h
#import "Blakey.h"
#endif
Blakey.h
很简单:
@import Foundation;
#import "MyProject-Swift.h"
@class KeyPair;
@interface Blakey: NSObject
- (void)createKeyPairForSeed:(NSString *)seed;
@end
和 Blakey.m
#import <Foundation/Foundation.h>
#import "Blakey.h"
@implementation Blakey
- (void)createKeyPairForSeed:(NSString *)seed;
{
}
@end
(旁注:我知道我的函数返回一个void,此问题解决后,它将在以后更改,因此它将返回实际值)
为什么Xcode在#import "MyProject-Swift.h"
in抛出错误Blakey.h
?
Project-Swift.h
是Xcode在成功编译项目时自动生成的文件。如果您的项目有任何编译错误文件,将不会生成成功编译一词Project-Swift.h
。因此,在某种程度上,它变成了僵局。Bestway注释掉所有有编译错误的行,然后设法使其编译没有任何错误。只有在那之后Project-Swift.h
才会生成。
附加信息,一旦Project-Swift.h
生成文件(如果您将其打开)并且偶然发现那里没有导入swift类,那是因为Project-Swift.h
仅导入从NSObject扩展的类,因此将不会导入普通的Swift类。
问题:
您需要导入Project-Swift.h
.m文件而不是.h文件。因此,将您的Blakey修改为
#import <Foundation/Foundation.h>
#import "Blakey.h"
#import "MyProject-Swift.h"
@implementation Blakey
- (void)createKeyPairForSeed:(NSString *)seed;
{
}
最后,除去 #import "MyProject-Swift.h"
从Blakey.h
@import Foundation;
@class KeyPair;
@interface Blakey: NSObject
- (void)createKeyPairForSeed:(NSString *)seed;
@end
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句