混合Swift和Objective C:" ProjectName-Swift.h"文件未找到

时间:2015-02-03 13:08:46

标签: ios objective-c xcode swift

所以我正在开发一个包含Swift和Objective-C类的iOS项目。

要实例化Objective-C中描述的对象,我知道我需要一个Bridging-Header文件,其中包含我将在Swift类中使用的所有头文件的导入。它在我的项目中运行良好。 我创建了我需要的所有类,我在Swift中继承了Objective-C类,一切都很好。

我的问题是,在相反的情况下:在Objective-C文件中实例化一个swift对象。所以我读到我需要有这些选项:

  • 定义模块
  • 在我正在处理的* .m文件中添加行#import "<#YourProjectName#>-Swift.h"

这就是我所做的:

我更改了需要更改的构建设置上的所有值。我添加了import行,我甚至尝试创建了头文件,但我仍然遇到"<#YourProjectName#>-Swift.h" file not found错误。

当然,我用实际模块名称替换了YourProjectName,我在“构建设置”的包装部分的产品模块名称下找到了该名称。此外,项目名称中没有空格。

我忘记了一步吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:8)

确保从.m Objective-C文件而不是.h头文件导入-Swift.h文件。 docs只讨论从.m:

导入
  

...将您的Swift代码的Xcode生成的头文件导入任何您想要使用Swift代码的Objective-C .m文件。

在构建期间生成-Swift.h文件,我发现从.h文件导入它总是失败,即使我知道文件存在。因为它是由构建生成的,所以我猜测它在编译器筛选标题时被清除,并在编译.swift文件后重新生成。