当前位置: 首页 > 知识库问答 >
问题:

模块“myFramework”的伞形标头不包括标头“otherFramework.h”

樊腾
2023-03-14

我的Swift/iOS9框架“查看器_协议”使用另一个外部Objective-C框架(CoCoCoAsyncSocket)。我在用迦太基建造CocoaAsyncSocket。到目前为止一切正常:在我的框架Xcode项目中有一个示例应用程序,使用我的框架没有任何问题。

现在我想在另一个Xcode项目中使用我的框架——尽管使用的是迦太基。我只将我的框架作为依赖项包括在内,而迦太基会自动将依赖项解析为CocoaAsyncSocket。我将这两个框架嵌入到这个新的Xcode项目中,并构建了我的应用程序:这里一切都很好——除了一个我无法摆脱的警告:

/Users/John/Repositories/my_project/<module-includes>:1:1: 
Umbrella header for module 'my_project' does not include header 'GCDAsyncSocket.h'

这是我的框架标题:

#import <UIKit/UIKit.h>

//! Project version number for my_project.
FOUNDATION_EXPORT double my_projectVersionNumber;

//! Project version string for my_project.
FOUNDATION_EXPORT const unsigned char my_projectVersionString[];

// In this header, you should import all the public headers of your framework     
using statements like #import <my_project/PublicHeader.h>
#import <CocoaAsyncSocket/CocoaAsyncSocket.h>

如您所见,CocoaAsyncSocket. h是导入的。此外,在我的框架中还包括CocoaAsyncSocket. h文件:

我错过了什么?我在我的框架中使用了其他几个外部框架,它们没有警告-所有这些外部框架都是用Swift编写的-CocoaAsyncSocket是纯Objective-C。

这是我的框架模块。模块映射:

 framework module my_project {
   umbrella header "my_project.h"

   export *
   module * { export * }
 }

 module viewer_protocol.Swift {
     header "my_project-Swift.h"
 }

使现代化

我找到了一个解决方案:将框架头中的import语句从

#import <CocoaAsyncSocket/CocoaAsyncSocket.h>

#import "CocoaAsyncSocket/CocoaAsyncSocket.h"

现在Xcode找到了头文件,警告消失了。

共有3个答案

危璞
2023-03-14

我也有同样的问题。似乎与旧的生成文件有关。

标准的Xcode问题修复程序对我有效:

  1. 清洁项目(产品
韶英达
2023-03-14

我今天也有同样的问题

模块HockeySDK的伞状标头不包括标头BITHockeyBaseViewController. h

解决办法是

1.构建并运行项目并转到报告导航器

2.查看警告,单击展开详细信息

它会让你的文件名,你需要作出改变,因为你可以看到在下面的屏幕截图

所以我刚刚更新了AppDelegate.m文件中的import语句

刚出现的

#import "HockeySDK/HockeySDK.h"

古老的

#import <HockeySDK/HockeySDK.h>

问题消失了...

希望这能帮助别人。他们来这里寻求解决方案。

龚沛
2023-03-14

我最近遇到了同样的问题。显然,我在目标成员身份中将头文件设置为public,但它并没有在伞形头中公开。通过使头文件具有project访问权限而不是public来修复此问题。

 类似资料:
  • 主要内容:文档标记标量内容在本章中,将重点介绍用于表示内容的各种标量类型。 在YAML中,注释可以在标量内容之前或之后。但要注意的是,注释不应包含在标量内容中。 请注意,除了在多个键中使用外,所有流标量样式都可以包含多行。 标量的表示如下 - 块标量头的生成输出如下所示 - 文档标记标量内容 此示例中的所有字符都被视为内容,包括内部空格字符。 普通换行符用下面给出的例子表示 - 相应的JSON输出如下所述 -

  • 我们什么时候应该在HttpRequest estMessage对象中使用标头而不是HttpClient中的标头?? 我们需要添加授权(总是在变化)和一些自定义标头(总是在变化) 问题 > 首选哪种方法 我是否应该向HttpClient添加公共头(所有请求都相同),并向HttpRequestMessage对象添加基于请求的头??

  • 问题内容: 我有一个简单的PHP脚本,正在尝试跨域CORS请求: 但是我仍然得到错误: 请求标头字段不允许 我有什么想念的吗? 问题答案: 不允许作为可接受的值,请参阅此处的Mozilla文档。 您应该发送可接受的标头(而不是如星号所示)而不是星号。

  • 问题内容: 我正在尝试通过Gmail OAuth 2.0访问用户的邮件,并且正在通过Google的OAuth 2.0 Playground解决此问题 在这里,他们指定了我需要将其作为HTTP REQUEST发送: 我尝试编写代码来发送此请求,如下所示: 无法运作,请提供协助。:) 更新: 我接受了 杰森·麦克里 ( Jason McCreary )的建议,现在我的代码如下所示: 但是我没有得到任何

  • 问题内容: 现在,我想将我的ObjC框架迁移到Swift,并遇到以下错误: 引用指向仅定义协议的头文件,我在某些类中使用此头文件来使用此协议。 似乎与模块功能有关,但目前尚不清楚如何解决,您知道解决方案吗? 更新: 这是Swift编译器错误。 更新2: 一种快速解决方案(但不能解决根本原因)是将以下设置设置为yes:CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAME

  • 现在我想将我的ObjC框架迁移到Swift,我得到了以下错误: 引用是一个头文件,它只是定义一个协议,我在某些类中使用此头文件来使用此协议。 似乎与模块功能有关,但目前还不清楚如何修复,你知道解决方案吗? 更新: 这是一个 Swift 编译器错误。 更新 2: 一个快速解决方法(但不能解决根本原因)是将以下设置设置为YES:CLANG _ ALLOW _ NON _ MODULAR _ INCLU