Objective-C 和 Swift 第三方库使用
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

在需要用到的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 会自动添加。

4、第三方库是OC库,粘贴到OC项目。
用到的文件中需要:#import "AFNetworking.h"
三、import时<>括号和""的区别
(1)在项目中导入库或者类的时候经常看到" #import <库名>" 或者 “#import '类名.h'" .
(2)""表示从当前项目路径开始寻找文件,如果找不到,则到系统(项目)中配置的头文件路径去找;
(3)<>表示直接到系统(项目)中配置的头文件路径去找。
作者:寒桥
链接:https://www.jianshu.com/p/6be32a047ca7
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
Objective-C 和 Swift 第三方库使用的更多相关文章
- 使用CocoaPod导入Swift第三方库报错
在使用cocoapod导入swift第三方时出现这样的错误: [!] Pods written in Swift can only be integrated as frameworks; add ` ...
- OC项目加入swift第三方库遇到的坑
https://www.jianshu.com/p/96d868dcd69c 2017.07.07 16:23* 字数 295 阅读 5218评论 2喜欢 4 首先,在OC项目的Podfile文件中添 ...
- 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 ...
- iOS OC中桥接swift第三方库
swift中有一些比较好的框架,比如绘图框架charts,最近项目中刚好用到,通过Pod的方式直接导入,xcode会自动生成charts-swift.h的文件,然后在需要导入的地方import < ...
- swift -- 单例+ lazy懒加载 + 第三方库
//工具类单例 static let goods : NHGoods = { let good = NHGoods() return good }() //懒加载 lazy var registerB ...
- Swift项目引入第三方库的方法
以下,将创建一个Swift项目,然后引入3个库: Snappy 简化autolayout代码的库 Alamofire HTTP网络库,AFNetworking作者写的 SDWebImage 图片加载, ...
- swift三方库
链接: Swift 有哪些优秀的第三方库? Swift 中AFNetworking 的替代方案 Alamofire Swift2.0后Alamofire的使用方法 [快速学会Swift第三方库] Al ...
- iOS开发进阶 - 使用Carthage管理iOS第三方库
移动端访问不佳,请访问我的个人博客 最近在研究Swift,一不小心发现一个好的的管理iOS第三方库Carthage,就跟第一次使用CocoaPods时一样兴奋不已,在研究了大半天后终于能用了,使用起来 ...
- Swift: 在Swift中桥接OC文件(自己创建的类文件、第三方库文件)
一.介绍 随着Swift的逐渐成熟,使用swift开发或者混合开发已经成为了一个趋势,本身苹果公司也十分推荐使用Swift这门新语言.目前Swift已经更新到了3.0,估计没有多久4.0就要出来了.那 ...
随机推荐
- k-近邻算法的优缺点及拓展思考
//2019.08.03晚#k-近邻算法的拓展思考与总结1.k-近邻算法是一种非常典型的分类监督学习算法,它可以解决多分类的问题:另外,它的整体思想简单,效果强大.它也可以用来解决回归问题,使用的库函 ...
- ReentrantLock售票的例子&sleep和wait的区别锁可重入是什么(笔记)
1 sleep 在哪里都可以用 调用Thread.sleep()但是 wait方法只能在同步方法和同步代码块中使用 wait也就是使得该线程成为阻塞状态(注意这里阻塞不是书本操作系统下的while循环 ...
- 2.Jsoup
public static void main(String[] args) { //爬取最大资源网上的数据 //用CSS选择器 try { Document doc = Jsoup.parse(ne ...
- CF 1198 A. MP3 模拟+滑动窗口
A. MP3 题意:给你n个数,一个大小为8*I的容量,保存一个数需要多少容量取决于给定n个数的种类k,用公式 log2 k 计算,如果给定的容量不能保存所有数,选择减少数的种类来降低保存一个 ...
- 2.24 模拟赛 + DIV2 总结
本来实在是不想打了,后来真的手痒. 晚上发现正进行DIV2然后就打了场,模拟,幸好没参加,逆风.排名2400 Codeforces Round #622 (Div. 2) A题十分钟过了 B题http ...
- P1093 字符串A+B
1093 字符串A+B (20分) 给定两个字符串 A 和 B,本题要求你输出 A+B,即两个字符串的并集.要求先输出 A,再输出 B,但重复的字符必须被剔除. 输入格式: 输入在两行中分别给出 ...
- GoJS实例4
此示例更改链接数据的“to”属性,使链接连接到不同的节点.复制如下内容保存到空白的.html文件中,用浏览器打开即可查看效果 <!DOCTYPE html> <html> &l ...
- Fiddler抓取HTTP请求。
参考链接:http://blog.csdn.net/ohmygirl/article/details/17849983/ http://www.cnblogs.com/kingwolf_JavaScr ...
- Redis详解(三)——事务
Redis详解(三)--事务 Redis事务的概念: Redis 事务的本质是一组命令的集合.事务支持一次执行多个命令,一个事务中所有命令都会被序列化.在事务执行过程,会按照顺序串行化执行队列中的命令 ...
- P1047 编程团体赛
转跳点: