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的主要内容,如果未能解决你的问题,请参考以下文章