Xcode找不到ProductModuleName-Swift.h

时间:2015-07-31 13:52:21

标签: objective-c xcode swift

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

#import "Aesculus-Swift.h"

如果我命令点击文件名,它将带我到生成的头文件,所以我知道它存在。为什么xcode无法找到它?

enter image description here

enter image description here

4 个答案:

答案 0 :(得分:5)

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

Openradar列出radar://21362856 - Swift to Objective-C bridging is unreliable。我相信还有更多,但我在这个例子中找不到一个。

作者imarcelv在说明中注明:

  

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

     

重现步骤:

     
      
  1. 将一个ramdom Swift类添加到Objective-C项目
  2.   
  3. 添加#import" ModuleName-Swift.h" Xcode自动生成的文件
  4.   
  5. 尝试使用它或只是尝试编译项目
  6.   
  7. 有时它根本不起作用
  8.   

这个问题可能最好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)

当你遇到这种情况时,只需找到你的那种&#34; ProductName-Swift.h&#34;文件只需cmnd +点击它(即使xcode显示没有找到它的警告,#import&#34; Aesculus-Swift.h&#34;字符串仍可点击)然后在打开的代码编辑器窗口中选择上下文菜单和&#34;在Finder中显示&#34; item,然后将其显式添加到您的项目中。

enter image description here