使用Objective-C代码引用建立Swift框架

18
我正在开发一个用Swift编写的iOS项目,我想从常规“应用”项目中取出一些类,并将其捆绑到可重用的Swift框架中(也许在Github和Cocoapods上公开发布)。
但是,我遇到了问题,因为框架似乎不能有Objective-C桥接头文件,但是为了编译我的框架代码,我需要引用几个Objective-C类(在这种情况下是Google Maps iOS SDK)。
我还将GoogleMaps.framework添加为我的框架项目中连接的库,但是,我如何从Swift代码中“导入”它?
在当前的工具和Swift版本下,是否可能实现这一点,我该如何继续进行?
谢谢。
1个回答

10

其实并不复杂... 我只是做错了一些事情。

首先,在这种情况下,桥接头文件是必需的:Google Maps iOS SDK作为一个普通的.framework文件提供,因此开发语言对于如何在Swift中导入它没有影响。 苹果在文档中明确提到:https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html,“导入外部框架”。

只需将该框架添加到项目设置的“链接二进制文件和库”部分即可。 不要忘记还要添加依赖的库和框架(在GoogleMaps.framework的情况下,有相当多)。

然后,在Swift代码中,框架类应该可以通过以下方式简单地使用:

import GoogleMaps

没有桥接头文件,也不需要处理"非模块化头文件等"错误。


谢谢你的回答,我遇到了同样的问题,但是当我尝试导入一个库,例如SVProgressHUD时,Xcode显示“没有这个模块'SVProgressHUD'”的错误。 - Siu Chung Chan
@SiuChungChan,你也在使用Cocoapod构建框架吗?你的问题可能不完全与我遇到的问题相同。也许最好开一个新问题并提供更多信息? - Romain
听起来,Romain 你没有使用 CocoaPods? - Geoffrey Wiseman
嘿@GeoffreyWiseman,据我记得,那个时候不行。但是现在我会了,尽管我在混合ObjC、Swift、Cocoapods和自定义框架时也遇到问题。但这又是另一个话题... - Romain
嘿@SiuChungChan,你找到你问题的答案了吗?我在使用SVProgressHUD时遇到了相同的问题。 - AmJa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接