Objective c 未找到将使用swift类的目标c类添加到桥接标头Projectname_swift.h

Objective c 未找到将使用swift类的目标c类添加到桥接标头Projectname_swift.h,objective-c,swift,Objective C,Swift,我有一个objective-c类,它使用swift类。一切都很好 我想将objective-c类导入swift类,所以我将其头文件添加到桥接头文件中。突然我发现一个错误,Projectname\u swift.h文件找不到 有没有办法解决这个问题? 实际上可能吗?清除派生数据。然后在目标c文件中导入ProjectName Swift.h 去 生成设置->目标C生成的接口头名称 然后将值设置为YourModule Swift.h这通常已经设置好了,这是需要在.m文件导入YourModule Swi

我有一个objective-c类,它使用swift类。一切都很好

我想将objective-c类导入swift类,所以我将其头文件添加到桥接头文件中。突然我发现一个错误,Projectname\u swift.h文件找不到

有没有办法解决这个问题?
实际上可能吗?

清除派生数据。然后在目标c文件中导入ProjectName Swift.h

去 生成设置->目标C生成的接口头名称 然后将值设置为YourModule Swift.h这通常已经设置好了,这是需要在.m文件导入YourModule Swift.h时导入的文件名 转到“生成设置”并搜索“定义”模块,将两个值都设置为“是” 例如,在swift中创建前缀为@objc的类 @objc类myswitclass{…} 重新构建项目
如果使用错误语法或屏幕截图,效果会更好。你可以试试这个 1.转到右侧导航顶部的项目 2.从中选择“生成设置”。 3.搜索Objective-C桥接头 4.您将在下面找到生成的接口HeaderName 5.添加swift文件的正确地址
6.清洁和建设项目

让Xcode构建从Objective-C到Swift的桥接文件

在别处创建一个临时目录。在这里,您创建了一个虚拟的Xcode Swift项目,并将该项目的名称与您现有的当前项目名称相同。 然后添加新文件Objective-C.m文件。XCode将提示您创建桥接头文件,单击最右边的创建桥接文件按钮

现在您可以在Finder中找到头文件的位置。然后拖动到当前感兴趣的项目中,不要忘记选中“复制文件”(如果需要)选项。在头文件中添加必要的导入“…”


你应该很好。如果一切正常,删除虚拟项目

已创建循环引用,因此Swift代码无法编译,从而导致出现金丝雀错误,表明未找到_Swift.h文件

我对类似的问题和问题提供了更深入的回答

长话短说,政府明确表示,不要这样做:

为避免循环引用,请勿将Swift代码导入Objective-C header.h文件。相反,您可以向前声明Swift类或协议,以便在Objective-C接口中引用它

Swift类和协议的转发声明只能用作方法和属性声明的类型


为了使代码再次编译,您需要从有问题的Objective-C头中删除import Projectname_Swift.h行。理想情况下,您可以简单地将import语句移动到.m文件中,但是如果您需要在ObjC头中公开Swift类,则必须使用@class SomeSwiftClass;进行转发声明

您不必在swift类中导入任何内容。。在桥接标头中导入objective-c类标头。。。。当您在objective-c中使用swift调用时,您需要像导入项目名称swift这样导入。h@Bilal我不会将任何obj-c头导入任何swift类。我将swift类导入到一个obj-c类中,然后我希望通过将其头文件放入桥接头文件,在另一个swift类中使用该类。编译器不喜欢它。一旦我将头文件放入桥接头文件中,_swift.h失败,您需要在Projectname_swift中使用-,而不是-。h@mikep这是一个打字错误,当我使用Swift to Obj-C和Obj-C to Swift时,标题工作正常,但当Swift to Obj-C to Swift时,标题工作正常项目工作,只要我不想使用在另一个Swift类中导入Swift类的objectve-C类。所以Swift->OBJ-C=正常,Swift->OBJ-C->Swift=错误