Xcode 8 with mixed Swift and Objective-c project generated “ModuleName-Swift.h” header not found
我在Xcode 8中有一个混合了swift和objective-c的项目,它使用生成的"modulename swift.h"头文件将swift导入到objective-c类中,但是预处理器找不到生成的头文件并在导入时引发错误。
"词汇或预处理器问题:"找不到modulename swift.h文件'"
这个项目编译得很好,但是预处理器对没有找到的头和类内调用的任何Swift类抛出错误,没有语法高亮显示或代码完成。与Objective-C中的Swift类一起工作是一种困难,Xcode8无法识别这些类,但编译起来却很好。
关于如何安抚Xcode8中的预处理器有什么想法吗?
我也有同样的问题。在添加了一个只针对一个目标的新文件(错误地)并注意到它读取swift类没有问题后,找到了解决方案。因此,如果您有多个目标,并且由于迁移不需要构建和运行它们,那么建议您这样做。
当我们有多个目标时,就有这个问题。如果新创建目标的swift编译器中的objective-c生成的接口头名称变量与原始目标的值不同。将其更改为与原始目标相同的值。请参见以下内容:
将newtargetname swift.h更改为新目标的originaltargetname swift.h
为了解决这个问题xcode 9.2,经过长时间的研究,我知道我的"objective-c生成的接口头名称"是以产品名"product name swift.h"命名的。
如果
- 你的产品的正常目标运行良好,但是
- 运行测试目标时会出错…
注意,每个目标使用(并且应该使用)不同的文件名作为objective-c生成的接口头名称。
这意味着您无法在目标-c
相反,您应该将这些
如果需要在
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | // // ViewController.h // import-example // #import <UIKit/UIKit.h> @class SomeSwiftClass; @interface ViewController : UIViewController - (NSString *) titleFromGenerator:(SomeSwiftClass *)generator; @end |
您需要将此添加到生成设置中。
迁移到Xcode8时可能会出现问题,在Xcode8中,构建设置swift头文件中将包含
如果来自基勒兹
Go to
Build Settings->Objective-C Generated Interface Header Name
and set the value to YourModule-Swift.h (this is usually already set, this is the filename you need to import on .m file #import"YourModule-Swift.h"