Xcode 找不到 ProductModuleName-Swift.h

Posted

技术标签:

【中文标题】Xcode 找不到 ProductModuleName-Swift.h【英文标题】:Xcode cannot find ProductModuleName-Swift.h 【发布时间】:2015-07-31 13:52:20 【问题描述】:

我正在尝试将我的“-Swift.h”文件导入我的 Objective-C .h 文件之一,但 xcode 一直告诉我该文件不存在

#import "Aesculus-Swift.h"

如果我命令单击文件名,它将带我进入生成的头文件,因此我知道它存在。为什么xcode找不到?

【问题讨论】:

【参考方案1】:

这似乎只是 Xcode 的另一个问题,它是静态分析器和编译器的复杂工具链。

Openradar 列出了radar://21362856 - Swift to Objective-C bridging is unreliable。我敢肯定还有更多,但我在为这个例子找到了一个之后就停止了寻找。

作者imarcelv在说明中注明:

我在实验室问过 WWDC 的一位 Swift 工程师,他甚至不知道如何解决这个问题。

复制步骤:

    将随机 Swift 类添加到 Objective-C 项目中 添加 Xcode 自动生成的#import "ModuleName-Swift.h" 文件 尝试使用它或只是尝试编译项目 有时它根本不起作用

在这个问题上最好file a radar,因为似乎其他人已经在大声疾呼了。

您可以尝试的另一件事...

从历史上看,Xcode 有可能完全失去它的语法高亮显示,您总是可以通过增加 clang 的日志级别来找出静态分析器放弃了哪些文件。

我不确定它是否仍然相关,但如果我处于你的位置,我会尝试这个命令:

defaults write com.apple.dt.Xcode IDEIndexingClangInvocationLogLevel 3

这会生成日志,您可以使用 Console.app 搜索 xcode 以突出显示消息。您会希望丢弃项目的派生数据以强制其重新编译。

虽然与您所看到的问题不同,但我已经将 this post 的语法高亮问题标记为书签多年,以便在这种情况下尝试上述 defaults write 命令。

【讨论】:

【参考方案2】:

我最近通过将以下条目添加到我的 .xcconfig 解决了这个问题(如果您愿意,可以将其添加到 Xcode 的构建设置 > 用户标头搜索路径中)。

USER_HEADER_SEARCH_PATHS = $(BUILT_PRODUCTS_DIR)/MyFramework.framework/Headers

这告诉编译器在构建输出目录中搜索头文件,这是 Xcode 放置生成的头文件的地方(至少在这个框架的情况下)。

在我的例子中,这是一个类似~/Library/Developer/Xcode/DerivedData/MyProject-LongCode/Build/Products/Debug-iphonesimulator/MyFramework.framework/Headers/MyFramework 的目录。您也可能会在其中找到生成的标头。

Xcode 的标头和依赖管理是一团糟,它不适合你也就不足为奇了。

【讨论】:

【参考方案3】:

我在处理这些东西时遇到了麻烦,发现您的 -Swift 文件是您的目标的产品名称(而不仅仅是您的目标的名称)。我发现这里的详细信息很有帮助:http://ericasadun.com/2014/08/21/swift-calling-swift-functions-from-objective-c/

【讨论】:

【参考方案4】:

当您遇到这种情况时,只需通过 cmnd+单击找到您的“ProductName-Swift.h”文件(即使 xcode 显示未找到它的警告,#import "Aesculus-Swift.h" string 仍然是可点击的),然后在打开的代码编辑器窗口中选择上下文菜单和“在 Finder 中显示”项,然后将其显式添加到您的项目中。

【讨论】:

以上是关于Xcode 找不到 ProductModuleName-Swift.h的主要内容,如果未能解决你的问题,请参考以下文章

xcode - 找不到设备支持文件[重复]

XCode - 为啥我找不到文件?

在 App Store 中找不到 Xcode 更新

Xcode 6 找不到 cocoapods 库

Xcode 找不到匹配的配置文件 - Ionic Cordova

找不到框架 Xcode 7.1