美文网首页SwiftiOS技术iOS Developer
如何在 Swift 项目中使用 OC 的第三方开源库

如何在 Swift 项目中使用 OC 的第三方开源库

作者: CaiYue_ | 来源:发表于2016-01-11 10:33 被阅读6909次

    目前需求

    作为一名iOS开发者,开发app的时候常常需要使用github上的第三方库等,但由于历史原因,很多的优秀资源目前还都是用Objective-C编写的。本文的目的是帮助swift项目无缝享用OC的类库。

    使用CocoaPods

    对CocoPods陌生的请点击这里

    例如,我们想使用 MJRefresh 类库,
    在项目的Podfile中加入一行:
    pod 'MJRefresh'
    然后执行 pod install 命令,等安装完成后,打开项目的 xcworkspace 文件。

    通过The Bridging Header进行桥接

    苹果官方推荐通过header file文件来让Swift项目使用OC。

    • 在Project Navigator中右键点击你的项目名,然后选择"new file", 选择source选项中的Header File,然后定义一个名称。我在此处是 Yoper-Bridging-Header.h 。(尽量采用官方推荐的命名方式,即 项目名-Briding-Header)

    • 生成之后文件中有默认的模板内容,我们要做的是在#endif上面导入OC库对应的.h文件(.h文件可以在Pods项目中的Pods文件夹下查看,这个.h文件中包含了该第三方库中的其他头文件)。

    Building Settings选项卡

    选中项目名,选择 Building Settings 选项卡(注意选中左边的 All),直接搜索关键词 bridging,在 Objective-C Bridging Header 右边对应的方框中双击,复制之前的 Yoper-Bridging-Header.h名称并粘贴,如图:

    Building Setting选项卡

    不需要再在项目中导入头文件,直接在自己的swift项目里试试,看看是不是已经可以调用第三方OC库的函数了?

    如果成功的话,恭喜你,可以继续享用Swift了。

    参考链接

    Apple's Documentation
    Using Objective-C CocoaPods libraries with Swift

    相关文章

      网友评论

      • 小曼blog:写的很详细,多谢
      • 挪威的森林_4173:我觉得是 1、 要是引用主工程文件(包括手动导入的第三方)走的是桥接头文件方式
        2、cocopods导入的 直接在swift文件中 import 就可以了
      • 三好夫人:如果我想引用2或2个以上的oc库,怎么解决头疼,
      • LD_左岸:Build Setting 中 defines module 设为Yes了
        product module name 也是工程的名字
        还报工程名-swift.h文件找不到?
        项目是framework
      • 小巷深深:我对照官方文档https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html#//apple_ref/doc/uid/TP40014216-CH10-ID138来添加SVProgressHUD ,在头文件里写的是#import <SVProgressHUD/SVProgressHUD.h>就可以编译通过。但是在VC中使用SVProgressHUD.show(),就会报错,找不到这个类。 在VC中添加 import SVProgressHUD 然后调用就成功了。 感觉有点晕啊,不知道哪个是对的
      • 巩固2022:cocoapods管理时添加了“use_frameworks!”,然后**_Bridging-Header.h在引用时出现“.h file not found”的问题,不知道你有没有遇见过?如何解决的?如果删除"use_frameworks!"就可以引用,但是cocoapods在安装swift版本库时有会提示错误而无法安装。
        从此你不再颠沛流离:@DerekXWang 这才是正解
        9c488bc74e26:http://stackoverflow.com/questions/24122914/how-to-integrate-cocoapods-with-a-swift-project
        保存use_frameworks!,直接在你需要的文件里import就好,不需要**_Bridging-Header.h了
        ps: Cocoapods 0.36及以上
        巩固2022:Pods written in Swift can only be integrated as frameworks; add `use_frameworks!` to your Podfile or target to opt into using it. The Swift Pod being used is: Alamofire
      • 干不动:请问下,如何在oc工程中添加已经写好的swift的库或者类
      • CaiYue_:把不足之处更新了一下
        干不动:@蔡越 请问下,如何在oc工程中添加已经写好的swift的库或者类
      • 巩小雅:看不懂,还是给个赞
        CaiYue_:@巩小雅 当时时间紧。。写地比较仓促,有空重新整理下。

      本文标题:如何在 Swift 项目中使用 OC 的第三方开源库

      本文链接:https://www.haomeiwen.com/subject/embqkttx.html