xcode 在Objective-C项目中找不到Swift类

zpjtge22  于 2023-03-24  发布在  Swift
关注(0)|答案(2)|浏览(427)

我正在做一个使用Objective-C开发的iOS项目。我需要在其中集成一些Swift文件。所以,做了以下事情:
1.添加了一个名为“temp”的新Swift文件,因此MyProject-Bridging-Header.h是由我的Xcode IDE(版本9.1)添加的。
1.将我想要使用的Swift文件添加到项目中。
1.将目标设置Defines Module更改为YES。
1.类似地,Product Module Name被设置为“MyProject”。
1.我可以看到设置“Objective-C Generated Interface Header Name”的MyProject-swift.h文件名。
1.在我的一个Objective-C .m文件中添加了MyProject-swift.h的import语句**,并且能够成功构建项目。**
1.我在Finder中检查了MyProject-swift.h被创建。
1.确保Swift类声明中的@obj前缀。
尽管如此,当我尝试使用任何Swift类时,我会得到编译时错误“User of undeclared identifier”。
问题的原因是什么?我是否遗漏了什么?
[update Xcode 14]默认情况下,PRODUCT_MODULE_NAME设置为XXX-Swift.h〈Swift,大写为S。

quhf5bfb

quhf5bfb1#

想明白了...
我在Objective-C类中缺少Swift类的 *forward声明 *。我所需要做的就是在.h文件中的接口声明之前添加以下语句。

@class MySwiftClassName;

一旦添加了语句,它就成功构建了。

owfi6suc

owfi6suc2#

[Xcode 14更新]
让Swift类暴露给Objective-C
流程:
1.从NSObject继承类
1.给予属性@objcMembers直接赋予Swift类,或选择性地将@objc赋予预期的类成员。
1.在要使用Swift类的ObjC类的标头中,添加Swift类声明@class SwiftClassXXX;
1.相应地,在你想要使用Swift类的ObjC类的.m文件中,#import一个编译器会自动生成的头文件。如果你的项目名为MyProject,自动头文件将是MyProject-Swift.hS大写)。
1.在.m中使用Swift类
您可以更改或检查MyProject-Swift.h自动头文件名,在构建设置中检查PRODUCT_MODULE_NAME-并根据需要更改它。

相关问题