我创建了一个混合的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
。即使将所有标题公开(我不想做)并将其复制到 Headers 文件夹也无济于事。
好像我错过了什么。
答案 0 :(得分:1)
我相信你需要为你的项目添加一个桥接头并将ObjcClassB.h导入它。 看一下这个文件 - https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html