https://www.jianshu.com/p/6be32a047ca7

原文地址: Objective-C 和 Swift 第三方库使用

注1:文章写于2016年9月,(swift 3.0、Xcode 8)不同版本可能不同,仅作参考。
注2:个人总结出的最好方式是使用cocoapods,没有用过的请参看之前的文章。

OC 第三方框架以 AFNetworking 3.1.0 为例。
Swift 第三方框架 Alamofire 4.0.0 为例。

一、通过cocopods导入项目:

(1)搜索第三方库
(2)创建Podfile文件
(3)编辑Podfile文件
(4)导入第三方库到工程

1、第三方库是swift库,导入到swift项目。

用到的文件中需要:import Alamofire

2、第三方库是swift库,导入到OC项目。

不考虑

3、第三方库是OC库,导入到swift项目。

用到的文件中需要:import AFNetworking

4、第三方库是OC库,导入到OC项目。

用到的文件中需要:#import "AFNetworking.h"

二、直接将文件粘贴到项目:

测试发现,有些第三方库拖进swift项目目录里直接可以用,比如IQKeyboardManagerSwift等。

如果第三方库是swift,不需要import,直接可用;如果第三方库是OC,在Bridge头文件中添加。

原因分析:

说明IQKeyboardManagerSwift里面使用的方法都是在foundation和uikit框架下的,不需要调用其他库的方法,直接拖进工程,你可以看做就是自己写的一些类而已。Alamofire框架用到了其他的库内容,需要导入这些库。

你可以用import做关键字搜索一下这些库里面导入的头文件,IQKeyboardManagerSwift只使用foundation和uikit,而Alamofire不是的

使用cocoapods来安装,一是可以方便管理第三方库,如果这些库有更新的话,可以直接pod update,另一方面是cocoapods在安装库的时候会自动帮你导入使用到的库文件,也就是避开了你自己导入的这个环节而已

1、第三方库是swift库,粘贴到swift项目。

参考下面的A
(1)在项目目录下使用git语句:git submodule add https://github.com/Alamofire/Alamofire.git, 或者去官网上下载下来将整个文件夹放到项目目录下
(2)将下载到本地的文件夹中Alamofire.xcodeproj 文件拖到项目中去
(3)General->Embedded Binaries-> + -> iOS -> Add
在需要用到的swift文件中:import Alamofire

2、第三方库是swift库,粘贴到OC项目。

不考虑

3、第三方库是OC库,粘贴到swift项目。

A. 添加库方法
(1)在项目目录下使用git语句:git submodule add https://github.com/AFNetworking/AFNetworking.git,或者 去官网上下载下来将整个文件夹放到项目目录下
(2)将下载到本地的文件夹中AFNetworking.xcodeproj 文件拖到项目中去
(3)General->Embedded Binaries-> + -> iOS -> Add

 
示例.jpg

在需要用到的swift文件中:import AFNetworking

B. 在A的基础上(或者用cocoapods导入OC框架后),创建Bridge头文件,这样不需要每次写impot就可以整个项目使用。
(1)创建一个普通的头文件,一般命名为项目名-Bridge-Header.h
(2)在头文件里面编写:

#ifndef Swift_test_Bridging_Header_h
#define Swift_test_Bridging_Header_h #import <AFNetworking/AFNetworking.h> #endif

(3)添加头文件到Build Settings -> Objective-C Bridging Header

==>快捷方法:
新建一个OC文件,选择自动创建头文件,然后在头文件里面编写 如上内容,删除OC文件。
Build Settings -> Objective-C Bridging Header 会自动添加。

 
示例2.jpg
4、第三方库是OC库,粘贴到OC项目。

用到的文件中需要:#import "AFNetworking.h"

三、import时<>括号和""的区别

(1)在项目中导入库或者类的时候经常看到" #import <库名>" 或者 “#import '类名.h'" .
(2)""表示从当前项目路径开始寻找文件,如果找不到,则到系统(项目)中配置的头文件路径去找;
(3)<>表示直接到系统(项目)中配置的头文件路径去找。

作者:寒桥
链接:https://www.jianshu.com/p/6be32a047ca7
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

Objective-C 和 Swift 第三方库使用的更多相关文章

  1. 使用CocoaPod导入Swift第三方库报错

    在使用cocoapod导入swift第三方时出现这样的错误: [!] Pods written in Swift can only be integrated as frameworks; add ` ...

  2. OC项目加入swift第三方库遇到的坑

    https://www.jianshu.com/p/96d868dcd69c 2017.07.07 16:23* 字数 295 阅读 5218评论 2喜欢 4 首先,在OC项目的Podfile文件中添 ...

  3. swift 第三方库迁移错误解决“Use Legacy Swift Language Version” (SWIFT_VERSION) is required to be configured correctly for targets which use Swift. Use the [Edit > Convert > To Current Swift Syntax…] menu to choo

    先看看错误提示 这里Alamofire库报错,原因打开工程会Xcode会提示你覆盖到最新的3.0版本.但是仍然有些框架会出现一些问题 解决办法: 选择Pods - ReactiveCocoa - Sw ...

  4. iOS OC中桥接swift第三方库

    swift中有一些比较好的框架,比如绘图框架charts,最近项目中刚好用到,通过Pod的方式直接导入,xcode会自动生成charts-swift.h的文件,然后在需要导入的地方import < ...

  5. swift -- 单例+ lazy懒加载 + 第三方库

    //工具类单例 static let goods : NHGoods = { let good = NHGoods() return good }() //懒加载 lazy var registerB ...

  6. Swift项目引入第三方库的方法

    以下,将创建一个Swift项目,然后引入3个库: Snappy 简化autolayout代码的库 Alamofire HTTP网络库,AFNetworking作者写的 SDWebImage 图片加载, ...

  7. swift三方库

    链接: Swift 有哪些优秀的第三方库? Swift 中AFNetworking 的替代方案 Alamofire Swift2.0后Alamofire的使用方法 [快速学会Swift第三方库] Al ...

  8. iOS开发进阶 - 使用Carthage管理iOS第三方库

    移动端访问不佳,请访问我的个人博客 最近在研究Swift,一不小心发现一个好的的管理iOS第三方库Carthage,就跟第一次使用CocoaPods时一样兴奋不已,在研究了大半天后终于能用了,使用起来 ...

  9. Swift: 在Swift中桥接OC文件(自己创建的类文件、第三方库文件)

    一.介绍 随着Swift的逐渐成熟,使用swift开发或者混合开发已经成为了一个趋势,本身苹果公司也十分推荐使用Swift这门新语言.目前Swift已经更新到了3.0,估计没有多久4.0就要出来了.那 ...

随机推荐

  1. STL访问Map问题,key为Integer或Long

    参考stackoverflows上的这篇文章 http://stackoverflow.com/questions/924451/jstl-access-a-map-value-by-key 换成 原 ...

  2. esxi 版本升级命令

    先把zip文件通过XShell或者WinSCP上传到esxi服务器上面去,然后执行以下命令,完成升级并重启就可以了.

  3. 零距离初体验uboot

    一.uboot配置编译步骤 1.开发板光盘的BSP 2.复制到虚拟机,tar -jxvf qt_x210v3_130807.tar.bz2 3.配置:make x210_sd_config 4.出现C ...

  4. 011.Delphi插件之QPlugins,延时加载服务

    这个DEMO是是把DLL插件的相关信息做成了一个配置文件,主程序加载这个配置文件,从而起到延时加载的作用 主程序代码如下 unit Frm_Main; interface uses Winapi.Wi ...

  5. 【Jasypt】给你的配置加把锁

    前言 前几天,有个前同事向我吐槽,他们公司有个大神把公司的项目代码全部上传到了 github,并且是公开项目,所有人都可以浏览.更加恐怖的是项目里面包含配置文件,数据库信息.redis 配置.各种公钥 ...

  6. 0109 springboot的部署测试监控

    springboot的部署测试监控 部署 基于maven 打包 JAR 打包方式一般采用的jar包,使用springboot的默认方式即可: 使用maven命令: mvn clean package ...

  7. [题解] LuoguP4091 [HEOI2016/TJOI2016]求和

    传送门 首先我们来看一下怎么求\(S(m,n)\). 注意到第二类斯特林数的组合意义就是将\(m\)个不同的物品放到\(n\)个没有区别的盒子里,不允许有空盒子的方案数. 那么将\(m\)个不同的物品 ...

  8. python假设一段楼梯共 n(n>1)个台阶,小朋友一步最多能上 3 个台阶,那么小朋友上这段楼 梯一共有多少种方法

    我们先把前四节种数算出来(自己想是哪几类,如果你不会算,那就放弃写代码吧,干一些在街上卖肉夹馍的小生意,也挣得不少) 标号 1    2    3     4 种类 1    2    4     7 ...

  9. 创建一个TCP代理

    代理技术 代理一般被我们用于"穿墙",具体来说可以看这里,或者查wiki.理解代理背后的原理之后,便很容易知道,代理的作用不仅仅只是"穿墙".例如我们可以把经过 ...

  10. HDU - 1394 Minimum Inversion Number(线段树求逆序数---点修改)

    题意:给定一个序列,求分别将前m个数移到序列最后所得到的序列中,最小的逆序数. 分析:m范围为1~n,可得n个序列,求n个序列中最小的逆序数. 1.将序列从头到尾扫一遍,用query求每个数字之前有多 ...