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

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

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

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

更新:

这是一个Swift编译器错误。

更新2:

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


当前回答

在我的情况下(Xcode 9 beta 6 - Swift 4 -使用Cocoapods),当我删除Podfile时,这个问题得到了解决。然后再次运行pod install

其他回答

我有Facebook 4.02 sdk和FBSDKCoreKit的具体问题。

我做了所有的步骤,但仍然错误关于非模块化头。我只从框架中拖放特定的头以构建阶段->头节。

然后在顶部的项目导航器上自动创建标题的副本。

我从构建阶段->头文件中删除了它,并删除了新文件,工作正常。

好像它被重置了。

对我来说,解决方案是去目标->构建设置->允许框架模块中的非模块化包含切换到YES!

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

Most commonly this error is caused by the chosen answer, yet I had this error appear once by accident when dragging framework files into my new project folder. I clicked to delete the frameworks but accidentally pressed to only 'Remove Reference' to the frameworks rather than to actually delete the files completely. At this point if I opened my project folder in Finder I saw files like 'CoreLocation' and 'AudioToolbox' there. Deleting these files from the project folder and cleaning the project fixed the issue.

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