现在我想将我的ObjC框架迁移到Swift,我收到以下错误:
include of non-modular header inside framework module 'SOGraphDB'
Run Code Online (Sandbox Code Playgroud)
引用是一个头文件,它只定义一个协议,我在一些类中使用这个头文件来使用这个协议.
似乎与模块功能有关,但目前还不太清楚如何修复,你知道一个解决方案吗?
更新:
这是一个Swift编译器错误.
更新2:
快速修复(但不解决根本原因)是将以下设置设置为yes:CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES
当我将我的框架编译成iOS应用程序项目时,我不断收到这些链接器警告:
<module-includes>:1:1: warning: umbrella header for module 'MyFramework' does not include header 'MyClass+StateAccess.h'Run Code Online (Sandbox Code Playgroud)
…/AppProject/AppClass.m:123:456 warning: missing submodule MyFramework.MyClass_BackdoorExtension' [-Wincomplete-umbrella]
#import <MyFramework/MyClass+BackdoorExtension.h>Run Code Online (Sandbox Code Playgroud)
然而,不同于这些SO答案:1,2,3 ; 我不希望MyClass+BackdoorExtension.h与框架的所有其他标题混为一谈. MyClass+BackdoorExtension.h是一个隐藏的"后门"界面,我的框架的MyClass- 使用的的BackdoorExtension的成员应出示error: property 'backdoorMember' not found on object of type 'MyClass *'除非特定的应用程序源文件包括MyClass+BackdoorExtension.h.
在Swift模块之前,这将按预期工作,而不会发出链接器警告; backdoorMember除非应用程序的.m文件有一个#import <MyFramework/MyClass+BackdoorExtension.h>,在添加完所有内容后编译并运行没有警告或运行时问题,否则无法访问.就目前而言,一切都按照预期编译和运行,但我想压制警告(我是那种喜欢将警告视为必须修复错误的开发者类型).我想找到一种方法来使用现有#import的应用Objective-C文件中提到的工作以及在应用程序Swift文件中的等效导入(例如import MyFramework.MyClass+BackdoorExtension).
我在我的框架中试验过explicit modules&explicit headers module.modulemap无济于事.
这是我目前的框架module.modulemap …