在Swift应用程序中集成闭源混合Swift和Objective-C框架

时间:2017-07-11 18:38:16

标签: ios objective-c swift xcode frameworks

我创建了一个混合的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 文件夹也无济于事。

好像我错过了什么。

1 个答案:

答案 0 :(得分:1)

我相信你需要为你的项目添加一个桥接头并将ObjcClassB.h导入它。 看一下这个文件 - https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html