现在我想把我的ObjC框架迁移到Swift,我得到了以下错误:

include of non-modular header inside framework module 'SOGraphDB'

引用是一个头文件,它只是定义了一个协议,我在一些类中使用这个头文件来使用这个协议。

这似乎与模块特性有关,但目前不太清楚如何修复,你知道解决方案吗?

更新:

这是一个Swift编译器错误。

更新2:

一个快速的解决方法(但不能解决根本原因)是将以下设置设置为yes: clang_allow_non_modular_incles_in_framework_modules = yes


当前回答

当我在一个项目中包含我自己的框架时,我就遇到了这个问题。修正了将sqlite3.h的所有导入都放在。m文件中,而不是公共的。h文件中。我认为其他库也会在Xcode中标记出类似的问题。

其他回答

当我在一个项目中包含我自己的框架时,我就遇到了这个问题。修正了将sqlite3.h的所有导入都放在。m文件中,而不是公共的。h文件中。我认为其他库也会在Xcode中标记出类似的问题。

头文件已分配给目标,但仅被标记为项目可见,只是更改为公共导致解决此错误。

这个答案已经过时了。

导入框架时,必须导入所有与根头文件共享依赖关系的头文件。确保这总是有效的最简单的方法是导入框架的“headers”文件夹中的所有头文件到你的公共头文件路径。

Swift编译器使用这些信息生成一个非破损符号的映射及其相关的类型信息。

我在将一个项目从swift2更新到swift3后遇到了这个问题。我使用XCode 8.3.2更新代码,无法摆脱“框架模块内的非模块化头”的错误。当我在另一个版本的XCode(版本9.0.1)中打开相同的项目时,错误没有出现。

允许框架模块中的非模块化包含为YES!为我解决了同样的问题。