将Project-Swift.h导入到Objective-C类…找不到文件

我有一个在Objective-C中开始的项目,我正在尝试将一些Swift代码导入到之前编写Objective-C的相同类文件中。

我已经咨询了在同一个项目中使用Swift和Objective-C的Apple 文档 ,以及像这样的问题 ,但仍然无济于事:在放入#import "NewTestApp-Swift.h"之后,我继续得到文件未find的错误#import "NewTestApp-Swift.h"NewTestApp是产品和模块的名称)。

这是我迄今为止所做的:

  1. 在“ Define Modules ,为应用selectYES是”。
  2. 确保产品模块名称中没有任何空间(请参阅下面的屏幕截图问题)

我已经尝试在ViewController.mViewController.hAppDelegate.m使用#import "NewTestApp-Swift.h" ,但他们都没有工作。

我还有什么不正确的做法? 谢谢你的帮助。


设置的屏幕截图:

在这里输入图像说明


我目前遇到的错误:

在这里输入图像说明

我遇到了同样的问题,无法让我的项目快速导入到obj-c类。 使用Xcode 6,(应该为Xcode 6+工作),并能够这样做… ….

  1. 您需要在.h文件中访问的任何类都需要这样的前向声明

@class MySwiftClass;

  1. 仅在.m文件中,如果代码位于同一个项目(模块)中,则需要将其导入

#import "ProductModuleName-Swift.h

链接到关于它的苹果文档

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html#//apple_ref/doc/uid/TP40014216-CH10-XID_87

如果Swift代码在模块内部(如你的情况):

 #import <ProductName/ProductModuleName-Swift.h> 

如果Swift代码在项目中(混合Swift和ObjC):

 #import <ProductModuleName-Swift.h> 

在你的情况下,你必须在* .m文件中添加这一行:

 #import <NewTestApp/NewTestApp-Swift.h> 

重要提示:请看导入语句中的“<”

https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html

我如何设法导入到目标C快速:

  • 将模块定义为YES(在项目上 – 不在目标上)
  • 产品模块名称集(在目标上 – 不在项目上)
  • 在您的ViewController.m中导入swift代码:

     #import "MyProductModuleName-Swift.h" 
  • 添加一个swift文件到你的objective-c项目(File – > New – > Swift), Xcode将创build从objective-c到Swift 的桥接头但是这对于使其以相反的方式工作也是至关重要的 – 显然。

对于这个谜题的最后一块感谢Swiftoverload使我意识到实际上通过Xcode GUI添加一个Swift文件,而不是拖放现有的Swift文件到我的项目中使其工作: http : //swiftoverload.com/using -swift -在你的Objective-C的项目/

使用Xcode 8.2.1,如果你看看Project > Build Settings> Objective-C Generated Interface Header Name ,那么它只显示一个名为Product -Swift.h的头文件

这意味着,不是分别从Objective-C .m文件中导入每个模块,而是使用单独的-Swift.h文件,只需导入一个产品 -Swift.h,该产品集合了所有的Swift模块。

我通过寻找单独导入模块的传统方式来遇到同样的问题,但是当前版本的Xcode和Swift 3将其更改为仅为所有模块导入使用一个头。

我在将Swift导入Objective-C项目时遇到了问题。 最后我查看了Derivied Data文件夹来检查Xcode 7的生成过程。 文件名与我期待的完全不同。

一旦我有我导入的实际的文件名,项目可以build立。

在使用git进行项目时,遇到了与我的团队相同的问题。 一位开发者没有将Xcode更新到最新版本(7.3),这是最新的Swift 2.2版本所要求的。 所以,编译器还没有识别出新的Swift语法,也无法为Swift库(projectname-swift.h)生成接口。 检查Xcode版本是否是最新版本!

DEFINE MODULES:YES并在Obj-C类的.m文件中导入“ProjectName-Swift.h”

这对我来说是在Obj-c中访问Swift类的。