我创建了一个混合的 Objective-C 和 Swift 框架,它有一个用 Swift 编写的 API 类:
@import PrivateIncludes
@objc open class FrameworkApi : NSObject {
@obj open static func setup(apiKey: String) {
}
}
这个类引用了多个其他类:来自框架中的 Objective-C 和 Swift。
我的模块映射文件导入多个 Objecive-C 文件:
module PrivateIncludes {
header "./ObjcClassA.h"
header "./ObjcClassB.h"
...
}
在Objective-C应用程序中集成框架时,一切都按预期工作。我导入框架并毫无问题地使用它:
@import MyFramework;
[FrameworkApi setupWithApiKey:@""];
这按预期工作。
另一方面,当尝试从 Swift 代码导入框架时:
import MyFramework
编译器抱怨:
ObjcClassA.h:10:9: 'ObjcClassB.h' file not found
由于ObjcClassA
利用了ObjcClassB
.即使将所有标题公开(我不想这样做(然后复制到标题文件夹也无济于事。
好像我错过了什么。
我相信您需要为项目添加一个桥接标头并将 ObjcClassB.h 导入其中。 看看这个文档 - https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html