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

摘要:
ONOEXMLDocument.h.png问题描述为:Includeof non-modular headerinsiderframeworkmodule“xxxx”解决方案是将AllowNon-modular includedsinFrameworkModules in BuildSetting修改为YES参考:Includeofnon-modual headerinsideXXXXOC项目引入了一个使用swift编写的第三方库,并于1月15日15:20:38jinrui报告了一个错误,2018_ W阅读:1488版权声明:本文为博主原创文章,未经博主许可不得转载。从OC项目Cocoapods导入Swift库的错误解决方案https://blog.csdn.net/niumanxx/article/details/8048142620182008年5月28日14:24:52,牛满xx的读者人数:1088版权声明:未经博主许可,不得转载。

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后再看)

OC项目加入swift第三方库遇到的坑第1张

引用Ono.h地方

是的,已经添加frame前缀Ono了,还是报错;

一共报了2处错误,第一个就是它,一开始以为是frame前缀拼错了,用代码提示来写也不对。

跳转到Ono.h文件里边也没发现报错

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

Ono.h.png

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

OC项目加入swift第三方库遇到的坑第3张

第二个问题才是重点! 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了。

Alt text

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进来的库,

比如:OC项目加入swift第三方库遇到的坑第5张改成OC项目加入swift第三方库遇到的坑第6张,不是Pod进来的不用改;

3.点击pods Target如图:OC项目加入swift第三方库遇到的坑第7张,,再点击Build Setting,如图:

OC项目加入swift第三方库遇到的坑第8张

搜索Swift Language Version,将版本设置为Swift库能支持的最高版本,如图:OC项目加入swift第三方库遇到的坑第9张

免责声明:文章转载自《OC项目加入swift第三方库遇到的坑》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇面试 -- 核心篇 -- 中间件(消息)axios和后端交互时,参数需要写在body和query中同时写下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

读懂 Deployment YAML

既然要用 YAML 配置文件部署应用,现在就很有必要了解一下 Deployment 的配置格式,其他 Controller(比如 DaemonSet)非常类似。 还是以 nginx-deployment 为例,配置文件如下图所示: ①apiVersion是当前配置格式的版本。②kind是要创建的资源类型,这里是Deployment。③metadata是该...

Kubernetes (yaml 文件详解)

# yaml格式的pod定义文件完整内容:apiVersion: v1       #必选,版本号,例如v1kind: Pod       #必选,Podmetadata:       #必选,元数据  name: string       #必选,Pod名称  namespace: string    #必选,Pod所属的命名空间  labels:   ...

Android Studio项目导入aar包报错

最近在试着接入TrPay的sdk,根据它家文档需要导入它们的aar包(paysdk-release-1.2.2.aar)。 在AS中怎么给安卓项目导入aar包,网上搜一下就能看到无非也就下面三步: 1、把aar放到module里的libs目录下。新建安卓项目时,默认的模块名字是app,即放到app/libs/下。 2、在app的build.gradle中加...

K8s容器资源限制

在K8s中定义Pod中运行容器有两个维度的限制:1. 资源需求:即运行Pod的节点必须满足运行Pod的最基本需求才能运行Pod。如: Pod运行至少需要2G内存,1核CPU2. 资源限额:即运行Pod期间,可能内存使用量会增加,那最多能使用多少内存,这就是资源限额。 # kubectl describe node node1.zcf.com...

Vue通过build打包后 打开index.html页面是空白的

最近在build打包vue项目遇到了几个问题,如下: 1、npm run build打包项目之后,我们通常是把dist文件里面被压缩后的static文件跟index.html提交到服务器,但最近发现直接打开index.html页面是空白的,还会报几个错,找不到页面路径。 原因:找到config文件下index.js,全局搜索assetsPublicPath...

AndroidStudio导出jar包

AndroidStudio导出jar包 - Android - 次元立方网 - 电脑知识与技术互动交流平台 不像在Eclipse,可以直接导出jar包。AndroidStudio只可以生成aar包。 在网上看到许多朋友问怎么可以像Eclipse一样导出jar包,其实我们只要知道它的原理就可以了。 用jar命令就可以打包你所需要的资源,并指定jar包名。...