@import 导致解析问题:"could not build module"

@import causes parse issue: "could not build module"

使用 Xcode 6.3 更新后,我发现我的项目有些奇怪。

下面的代码导致解析问题 "Could not build module 'AgendaFramework'",AgendaFramework 是我为 ios8:

自定义的嵌入式框架
@import MyEmbededFramework;

错误标记如下所示:

问题是在建立索引而不是构建过程中提出的。整个构建可以成功执行,没有任何错误或警告。我可以在设备上构建、存档、运行、部署、提交到 App Store。

然而,当我编辑属于扩展的 类 时,错误标记出现了。扩展(小部件)明确链接到嵌入式框架。 (我知道当我使用@import语句时我不必这样做。)

在这种状态下,收不到任何有效的内容助手,很烦人。

我将import语句替换成旧样式后,问题消失了:

#import <AgendaFramework/AgendaFramework.h>

我有几个其他项目与导致此问题的项目具有非常相似的拓扑结构,但它们没问题。只有一个项目导致此问题。我比较了每一个细节构建设置,我找不到任何线索。

我试过了:

欢迎提供任何线索。谢谢!

在构建设置中关闭模块。这可能有效

好像开启了: 允许非模块化包含在框架模块中 为我解决了这个问题。

有时这个问题可以通过将框架添加到与 .xcodeproj 文件相同的文件夹,没有子文件夹或任何东西来解决。

感谢 Jonny,他在问题中将其指出为评论。

今天我通过这些步骤解决了这个问题,:

  1. 选择架构"MyEmbededFramework"
  2. 按 [Command + B] 构建
  3. 在构建阶段面板中,将 "MyEmbededFramework.framework" 添加到 Link Binary With Libraries

尝试构建您的项目,问题现在可能会消失。

你可以试试这个,它对我有用。删除关于你的项目的 DerivedData 目录。step by step

对我有用的解决方案:框架中的勤奋 header 文件方向到系统样式导入...就像 #import <CoreXLib/CoreThreads.h> 故事:

在我的例子中,我构建的框架来自多个代码库的组合,因为很明显我可以通过 Framework 与脆弱的 Xcode 项目更轻松地重用该代码中的一些通用设计模式路径名。

在构建框架 "CoreXLib" 时,我将其重组为 Xcode 典型的 Cocoa 框架。我从以下位置更改了导入:

    #import "CoreTypeAliases.h"    // project local style   

    #import <CoreXLib/CoreTypeAliases.h>    // system or framework style

适当。几个使用 CoreXLib.framework 的项目,其中包括 lego-folder 中的 public headers 工作......所以我认为我很高兴......

不幸的是,一些 header 的 public 没有得到完全更新。框架中的 类 以本地风格构建得很好。到目前为止,所有使用它的项目都可以正常工作,然后我 运行 变成了一个没有...的错误,@jeeeyul

所以在找到这个线程并找到@kwz 的解决方案之后,在我的案例中没有做任何事情,我决定在试图解决这个问题的同时完善代码。在完善过程中,我发现某些 #imports 没有像在 Xcode 搜索和替换中那样进行更改。是时候 hand-jamming...

在我的 CoreXLib 项目 headers 的 all 中修复 all 那些引用之后(不仅仅是 public ones, self defense),我又回到了问题中...我把新编译的 CoreXLib.framework 交给了 嵌入它的 er运行t 项目 ...问题消失了!我检查了框架项目和链接框架的项目中的Allow Non-modular Includes...,都是"No"。翻转到 "Yes" 和 "No" 在几个测试中没有任何区别。 其他更改是 #import "..."#import <CoreXLib/...> 修改。

所以有时擦亮苹果会把虫子敲掉...

您好,这是因为您在框架 header 中创建 public 的文件也必须是 public。

在构建设置中的 Build Active Architecture Only 中设置 YES。 它对我有用。