我正在尝试将我的“-Swift.h”文件导入到我的一个Objective-C .h文件中,但xcode一直告诉我该文件不存在
#import "Aesculus-Swift.h"
如果我命令点击文件名,它将带我到生成的头文件,所以我知道它存在。为什么xcode无法找到它?
答案 0 :(得分:5)
这似乎只是Xcode的另一个问题,也是静态分析器和编译器的复杂工具链。
Openradar列出radar://21362856 - Swift to Objective-C bridging is unreliable。我相信还有更多,但我在这个例子中找不到一个。
作者imarcelv
在说明中注明:
我在WWDC的一个实验室里问了一位Swift工程师,甚至他也不知道如何解决这个问题。
重现步骤:
- 将一个ramdom Swift类添加到Objective-C项目
- 添加#import" ModuleName-Swift.h" Xcode自动生成的文件
- 尝试使用它或只是尝试编译项目
- 有时它根本不起作用
醇>
这个问题可能最好file a radar,因为似乎其他人已经在调出它。
您可以尝试另外一件事......
从历史上看,Xcode可能完全失去它的语法高亮,你总是可以通过增加clang的日志级别找出静态分析器放弃的文件。
我不确定它是否仍然相关但如果我在你的位置我会尝试这个命令:
defaults write com.apple.dt.Xcode IDEIndexingClangInvocationLogLevel 3
这会生成您可以使用Console.app进行搜索的日志,仅显示xcode
以突出显示消息。您将要删除项目的派生数据,以强制它重新编译。
尽管与您所看到的问题不同,但我已经在语法突出显示问题上this post了多年,以便上述defaults write
命令在这些时间内尝试使用。< / p>
答案 1 :(得分:2)
我最近通过在.xcconfig中添加以下条目解决了这个问题(如果您愿意,可以在Xcode&#39的构建设置&gt;用户标题搜索路径中添加)。
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的标题和依赖关系管理是一个热点,它并不令人惊讶,它并不适合你。
答案 2 :(得分:2)
我遇到了这个东西的问题&amp;发现您的-Swift
文件是目标的产品名称(而不仅仅是目标的名称)。我发现这里的详细信息很有用:http://ericasadun.com/2014/08/21/swift-calling-swift-functions-from-objective-c/
答案 3 :(得分:1)