import swift class in objective-c, <myModule>-Swift.h file not found
我有一个用Objective-C编写的IOS项目,在项目中创建了一个Swift类,成功生成了在Swift中访问Objective-C的桥接头文件,工作正常。
我的问题是相反的。我想导入Objective-C代码中的Swift类。
在xcode的target->build settings->swift compiler部分,我看到了值为
1 | #import"myModule-Swift.h" |
我得到编译器错误:
1 | myModule-Swift.h file not found |
在Project中,我也找不到这个文件。我如何解决这个问题?
我的Xcode版本是6.4
更新日期:2018年5月Xcode 9.3
(例如,名为
与步骤1相同,转到"构建设置"并搜索"定义模块",将两个值都设置为"是"。
在
重新构建项目
导入.m文件上的
天啊。。实际进口声明不是"class swift.h",而是"projectname swift.h"。
如果在build settings->swift compiler code generation->objective-c generated interface header name下查找,可以找到文件名。
当我将Swift源拖入GUI时,文件没有生成。只有当我右键单击->将文件添加到"项目"时。然后它要求生成头文件。
如果有人想知道为什么在花了几个小时讨论这个问题之后,它仍然没有得到解决,你可能会遇到与我类似的情况,我实际上是在开发一个框架,而不是一个应用程序。
在这种情况下,objective-c生成的接口头import语句的格式如下:
1 | #import <ModuleName/ModuleName-Swift.h> |
我对Daniel Kroms的补充回答:
不要将-swift.h头添加到头。即使它看起来有效。仅将导入添加到.m文件!
如果在头Swift类中使用,请在@interface之前使用@class SwiftClassName进行正向声明。
然后您将在代码中看到真正的错误。
对我来说,问题是我用的是比特码。当我单击"更新到推荐的项目设置"时,它更改了一些设置,这可能是罪魁祸首。我在构建设置中将"启用的比特码"改为"否",现在它被修复了。
我把这个叠了好一阵子。在我的例子中,我的目标名称类似于"我的应用程序",使用破折号作为目标名称的一部分。我试着用
我在"DerivedData"文件夹下找到了"my-app-swift.h"。因此,如果您使用一些有趣的字符作为目标名称。您可以尝试用下划线
昨天我遇到了同样的问题,我花了几个小时的时间来解决它,但没有用。其他人可能和我在同一条船上。我完成了上面描述的所有步骤,但没有任何效果。
破坏我的原因是因为项目名称的工件遍布我的项目(以前不正确地更改了它的名称)。
如果上述所有步骤都失败了,我建议您像我一样做,并重命名您的项目,以便Xcode可以重置某些东西…这为我解决了问题。这样做真是太有魅力了!