Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c Swift和目标C:项目Swift.h和项目桥接头.h冲突_Objective C_Xcode_Swift - Fatal编程技术网

Objective c Swift和目标C:项目Swift.h和项目桥接头.h冲突

Objective c Swift和目标C:项目Swift.h和项目桥接头.h冲突,objective-c,xcode,swift,Objective C,Xcode,Swift,我有一个融合了Swift和Objective-C的项目 我目前正试图在Objective-C编写的视图控制器上从Swift调用一个方法 为了公开该方法,我将视图控制器的头添加到桥接头.h文件中 但是,视图控制器引用项目Swift.h,在编译桥接头时,该项目显然“不存在”。如果我删除了项目Swift.h,项目将编译,但是我无法从Objective-C端访问我需要的Swift功能 确切的错误是: "/Project/ViewController.h:10:9: error: 'Project-Swi

我有一个融合了Swift和Objective-C的项目

我目前正试图在Objective-C编写的视图控制器上从Swift调用一个方法

为了公开该方法,我将视图控制器的头添加到桥接头.h文件中

但是,视图控制器引用项目Swift.h,在编译桥接头时,该项目显然“不存在”。如果我删除了项目Swift.h,项目将编译,但是我无法从Objective-C端访问我需要的Swift功能

确切的错误是:

"/Project/ViewController.h:10:9: error: 'Project-Swift.h' file not found
#import "Project-Swift.h"
        ^
<unknown>:0: error: failed to import bridging header '/Project/Project-Bridging-Header.h'
“/Project/ViewController.h:10:9:错误:找不到“Project Swift.h”文件
#导入“Project Swift.h”
^
:0:错误:导入桥接标头“/Project/Project桥接标头.h”失败
我似乎有鸡和蛋的问题


关于如何解决这个问题,我可以调用Objective-C方法而不包括桥接头吗?

我建议您在
.m
文件中包含
Project Swift.h
文件,因此在
ViewController.m
中。如果您在其中定义了任何需要在头中的类,只需添加前向类声明使用
@class MyClassFromProjectSwift
我建议您在
.m
文件中包含
Project Swift.h
文件,因此在
ViewController.m
中。如果您在其中定义了任何需要在标头中的类,只需使用
@class MyClassFromProjectSwift
添加前向类声明>.

感谢您的快速回复。转发声明类非常有效(谢谢!)但是使用此方法转发声明协议时遇到问题。(例如,
@protocol SecondSwiftControllerDelegate;
会产生警告
找不到协议定义
)。我希望你没有需要的协议,因为遗憾的是你不能转发声明。我会尝试在ObjC中声明这个协议。问题是,你试图做的事情会导致一个包含循环。编译器需要桥接头才能编译Swift部分,它需要Swift部分编译后能够获得ObjC部分的协议定义。感谢您的快速回复。前向声明类非常有效(谢谢!),但是我使用此方法前向声明协议时遇到了问题。(例如,
@protocol SecondSwiftControllerDelegate;
产生警告
找不到协议定义
)。我希望你没有需要的协议,因为遗憾的是你不能转发声明。我会尝试在ObjC中声明这个协议。问题是,你试图做的事情会导致一个包含循环。编译器需要桥接头才能编译Swift部分,它需要Swift部件被编译为能够获取ObjC部件的协议定义。