将Project-Swift.h导入到Objective-C类…找不到文件
我有一个在Objective-C中开始的项目,我正在尝试将一些Swift代码导入到之前编写Objective-C的相同类文件中。
我已经咨询了在同一个项目中使用Swift和Objective-C的Apple 文档 ,以及像这样的问题 ,但仍然无济于事:在放入#import "NewTestApp-Swift.h"
之后,我继续得到文件未find的错误#import "NewTestApp-Swift.h"
( NewTestApp
是产品和模块的名称)。
这是我迄今为止所做的:
- 在“
Define Modules
,为应用selectYES
是”。 - 确保产品模块名称中没有任何空间(请参阅下面的屏幕截图问题)
我已经尝试在ViewController.m
, ViewController.h
和AppDelegate.m
使用#import "NewTestApp-Swift.h"
,但他们都没有工作。
我还有什么不正确的做法? 谢谢你的帮助。
设置的屏幕截图:
我目前遇到的错误:
我遇到了同样的问题,无法让我的项目快速导入到obj-c类。 使用Xcode 6,(应该为Xcode 6+工作),并能够这样做… ….
- 您需要在.h文件中访问的任何类都需要这样的前向声明
@class MySwiftClass;
- 仅在.m文件中,如果代码位于同一个项目(模块)中,则需要将其导入
#import "ProductModuleName-Swift.h
链接到关于它的苹果文档
如果Swift代码在模块内部(如你的情况):
#import <ProductName/ProductModuleName-Swift.h>
如果Swift代码在项目中(混合Swift和ObjC):
#import <ProductModuleName-Swift.h>
在你的情况下,你必须在* .m文件中添加这一行:
#import <NewTestApp/NewTestApp-Swift.h>
重要提示:请看导入语句中的“<”
我如何设法导入到目标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类的。