我有一个使用swift类的objective-c类。一切正常。
我想将objective-c类导入swift类,因此我将其头文件添加到桥接头中。突然之间我收到了一个错误,找不到Projectname_swift.h文件。
有任何想法如何解决此问题? 它真的可能吗?
答案 0 :(得分:5)
让Xcode构建从Objective-C到Swift的桥文件。
在别处创建temporary directory
。在那里,您创建了dummy Xcode Swift project
,将project name
same
作为your existing Current Project Name
。
然后添加新文件Objective-C(.m文件)。 XCode将prompt
您在click
(最右侧的按钮)上创建桥头文件the create bridge file
。
现在,您在Finder中找到头文件位置。然后拖入Current Project of Interest
,不要忘记checked
copy file if necessary
选项。在头文件中添加必要的#import '.....'
。
你应该好。如果一切正常,请删除dummy project
。
答案 1 :(得分:3)
已经创建了一个循环引用,因此Swift代码无法编译(这导致了错误,指出找不到_Swift.h
文件。)
长话短说,documentation明确地说不是这样:
要避免循环引用,请不要将Swift代码导入Objective-C头文件(.h)。相反,您可以转发声明Swift类或协议以在Objective-C接口中引用它。
Swift类和协议的前向声明只能用作方法和属性声明的类型。
为了使您的代码再次编译,您需要从有问题的Objective-C标头中删除#import "Projectname_Swift.h"
行。理想情况下,您只需将import语句移动到.m文件中,但是如果需要在ObjC标头中公开公开Swift类,则必须使用@class SomeSwiftClass;
转发声明它。
答案 2 :(得分:1)
清理派生数据。然后在目标c文件中#import“ProjectName-Swift.h”。
答案 3 :(得分:1)
如果您使用错误语法或屏幕截图会更好。你可以试试这个 1.将您的项目转到右侧导航的顶部 2.从中间疼痛中选择构建设置。 3.搜索Objective-C桥接头 4.在这下面你会发现“Generated interface HeaderName” 5.添加swift文件的正确地址 6.清理并构建项目。