iOS:No such module

No such module 指的是找不到该模块,本质问题是模块化导入。

出现这个报错分为几种情况:

一、主工程导入主工程中文文件

这种情况一般不会报"No such module ",更多的是"No such file"之类的报错。因为这种情况下是 OC 混编中,swift 通过 bridge-header.h 文件来引用 OC 中的文件。

所以,直接在 birdge-header.h 中添加 #import "xxx.h" 之后,就可以在 swift 文件中直接使用 OC 类。

二、主工程 import 私有库

这种情况下,一般是使用 cocoapods 导入第三方库时会出现。

1. 版本问题

有的 pod 库支持的 swift 版本比较低,这个时候只需要把主工程中的 swift 版本调低即可,但是这种情况在 swift4和 swift5 发布后基本很少出现了,因为 swift 相对而言已经很稳定了。

2. 私有库配置问题(一般情况下pod会自动配置umbrella.h)

一般而言,cocoapods 会自动帮我们配置.

三、Framework/SDK

这种情况在实际开发中很少遇到,基本只有制作 SDK包,或者自制 framework 后导入到工程中才会遇见,而官方文档中的第二种情况就是针对这种情况的。具体配置参照官方文档:Importing Objective-C into Swift

四、私有库 import 私有库

保证配置都没问题的基础上(其实配置大概率不会有啥问题,cocopods帮我们屏蔽了大部分配置),一定要加上 dependency。

比如 podA 中的 swift 文件使用到了 podB 中的代码,那么在 podA 中的 spec 文件中添加:s.dependency 'podB'

你可能感兴趣的:(iOS:No such module)