OC项目加入swift第三方库遇到的坑
https://www.jianshu.com/p/96d868dcd69c
2017.07.07 16:23* 字数 295 阅读 5218评论 2喜欢 4
首先,在OC项目的Podfile文件中添加如下
use_frameworks!
pod 'PromiseKit', '~> 4.2.2' #任意一个swift库
然后pod install
接着编译command+r
会有报错。
先不管报错,xcode提示修改项目配置,主要是修改
ALWAYS_SEARCH_USER_PATHS = NO;
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
如果没有提示,请自行到project.pbxproj文件中找到ALWAYS_SEARCH_USER_PATHS改为NO;
在其上面添加一行ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
然后就是修改报错
以前没有加入use_frameworks!前OC调用Pod引入的第三方库时,是这样调用的#import <YYKit.h>,现在全部给它加上frame前缀#import <YYKit/YYKit.h>
记住不要按照xcode的提示去修改,它提示你把<>改为"",这样就真的找不到头文件了。
这是一个艰苦的过程,我足足改了100+个文件,还好有批量替换☺
如果你也和我一样用到mattt大神的Ono,或者其他比较古老的第三方库,或许你也碰到这样的问题(如果没看到,clean后再看)

引用Ono.h地方
是的,已经添加frame前缀Ono了,还是报错;
一共报了2处错误,第一个就是它,一开始以为是frame前缀拼错了,用代码提示来写也不对。
跳转到Ono.h文件里边也没发现报错

Ono.h.png
想着处理第二个问题再说咯,这时发现了问题的端倪

第二个问题才是重点! ONOXMLDocument.h.png
问题描述是:Include of non-modular header insider framework module 'xxxx'
解决方案是在Build Setting中修改Allow Non-modular includes in Framework Modules 为YES
参考资料:include of non-modular header inside XXXX
OC项目引入使用swift编写的三方库后,报错
2018年01月15日 15:20:38 jinrui_w 阅读数:1488
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jinrui_w/article/details/79064975
OC项目引入使用swift编写的三方库后,报错
- 错误描述:The “Swift Language Version” (SWIFT_VERSION) build setting must be set to a supported value for targets which use Swift. This setting can be set in the build settings editor.
- 解决办法:
- 选中Pods项目
- TARGETS选择对应的使用swift编写的三方库
- 切换到Build Setting选项
- 在搜索框输入swift language搜索
- 将Swift Language Version中的Unspecified改为对应的Swift版本(Swift 3.2)
- 重新build项目,这是可能会报一些Swift的语法错误,修改一下就OK了。
OC项目Cocoapods导入Swift库出错解决办法
https://blog.csdn.net/niumanxx/article/details/80481426
2018年05月28日 14:24:52 niumanxx 阅读数:1088
版权声明:未经博主允许不得转载。 https://blog.csdn.net/niumanxx/article/details/80481426
由于本人在开发过程中主要用的是OC语言,所以pod的都是OC库,Podfile里又没加use_frameworks!
所以一直都是.a类型的。后来因为需求需要用到一个只有swift版本的库,就使用use_frameworks!将所有.a库变成了.framework。然后信心满满地运行工程,结果GG。
最后归纳出几个需要注意的点:
1.将用到的库提示找不到的,从#import <xxx.h>改为#import "xxx.h";
2.找到Target->Build Settings->Other Linker Flags,把Pod进来的库,
比如:改成
,不是Pod进来的不用改;
3.点击pods Target如图:,,再点击Build Setting,如图:
搜索Swift Language Version,将版本设置为Swift库能支持的最高版本,如图:
OC项目加入swift第三方库遇到的坑的更多相关文章
- iOS OC中桥接swift第三方库
swift中有一些比较好的框架,比如绘图框架charts,最近项目中刚好用到,通过Pod的方式直接导入,xcode会自动生成charts-swift.h的文件,然后在需要导入的地方import < ...
- Objective-C 和 Swift 第三方库使用
https://www.jianshu.com/p/6be32a047ca7 原文地址: Objective-C 和 Swift 第三方库使用 注1:文章写于2016年9月,(swift 3.0.Xc ...
- swift调用oc语言文件,第三方库文件或者自己创建的oc文件——简书作者
Swift是怎样调用OC的第三方库的呢?请看下面详情: 情况一: 1.首先打开Xcode,iOS->Application->Single View Application, 选Next. ...
- 使用CocoaPod导入Swift第三方库报错
在使用cocoapod导入swift第三方时出现这样的错误: [!] Pods written in Swift can only be integrated as frameworks; add ` ...
- vue-cli创建的项目中引入第三方库报错 'caller', 'calle', and 'arguments' properties may not be...
http://blog.csdn.net/sophie_u/article/details/76223978 以在vue中引入mui第三方库为例: 虽然针对vue,有单独的vue-mui库可以使用,但 ...
- pyinstaller 如何引入Pycharm项目中的第三方库
使用Pycharm作为IDE的项目,引用的第三方库一般放在项目所在目录的venv\Lib\site-packages下,因此可使用以下语句引入第三方库 pyinstaller -p venv\Lib\ ...
- vue-cli创建的项目中引入第三方库报错'caller', 'calle', and 'arguments' properties may not be...
本文链接:https://blog.csdn.net/Sophie_U/article/details/76223978 问题: 在vue的main.js中引入mui.min.js时,报错. 如上,单 ...
- 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 ...
- 自己项目使用了ARC,项目中使用第三方库继续引用ARC
Objective-C引入ARC(Automatic Reference Counting)后,我们经常会面对这样一种困境:自己的项目使用了ARC,却发现要使用的第三方类库是non-ARC的:又或者自 ...
随机推荐
- Socket传输大文件(发送与接收)
下载 Client using System; using System.Collections.Generic; using System.Linq; using System.Text; usin ...
- SIAMATIC S7-1200 中通过 Modbus RTU 如何读取地址范围 9999 到 65535 的输入字
原文地址 说明 除了需要 STEP 7 >= V13 SP1 (TIA Portal) 的软件,还需要 S7-1200 CPU 固件版本 >= V4 (文章编号: 6ES721x-1xx4 ...
- Visual c++6.0如何创建工程项目
首先,打开电脑里安装的visual C++ 6.0 ,进入其选择的主界面,如果兼容性不对,先调整一下电脑与软件的兼容性. 进入主界面之后,点击左上角的文件,然后点击新建,可以创建新的文件. 打开后弹出 ...
- Vue.js面试题
一.什么是MVVM? MVVM是Model-View-ViewModel的缩写.MVVM是一种设计思想.Model 层代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑:View 代表UI ...
- Myeclipse项目出现红叉解决方案
1.右键点击你的项目.选中properties 2.选中MyEclipse下的Project Facets里面的java 此时的版本号为1.5,修改 3.选中MyEclipse下的Project Fa ...
- SciPy 介绍
章节 SciPy 介绍 SciPy 安装 SciPy 基础功能 SciPy 特殊函数 SciPy k均值聚类 SciPy 常量 SciPy fftpack(傅里叶变换) SciPy 积分 SciPy ...
- 配置uboot指定nfs挂载根文件系统
背景: 文件系统的调试也建议在 网络中进行. 概念: NFS是Network File System的缩写及网络文件系统. 要功能是通过局域网络让不同的主机系统之间可以共享文件或目录. NFS系统和W ...
- SChema中group指示器的使用
<?xml version="1.0" encoding="UTF-8"?> <!-- edited with XMLSpy v2011 (h ...
- (转)如何判断VPS是基于哪种虚拟技术?Xen、OpenVZ、Xen HVM、KVM还是VMware
对于VPS新手来说,怕被无良的奸商给忽悠,下的Xen的却给的OpenVZ的,如何来判断自己买的VPS是那种虚拟技术的,下面VPS侦探整理一些常见的方法. 1.通过系统上的相关目录或文件判断 执行:ls ...
- pytesseract 识别率低提升方法
pytesseract 识别率低提升方法 一.跟换识别语言包 下载地址https://github.com/tesseract-ocr/tessdata 二.修改图片的灰度 from PIL impo ...