所以我正在开发一个包含Swift和Objective-C类的iOS项目。
要实例化Objective-C中描述的对象,我知道我需要一个Bridging-Header文件,其中包含我将在Swift类中使用的所有头文件的导入。它在我的项目中运行良好。 我创建了我需要的所有类,我在Swift中继承了Objective-C类,一切都很好。
我的问题是,在相反的情况下:在Objective-C文件中实例化一个swift对象。所以我读到我需要有这些选项:
#import "<#YourProjectName#>-Swift.h"
。这就是我所做的:
我更改了需要更改的构建设置上的所有值。我添加了import
行,我甚至尝试创建了头文件,但我仍然遇到"<#YourProjectName#>-Swift.h" file not found
错误。
当然,我用实际模块名称替换了YourProjectName,我在“构建设置”的包装部分的产品模块名称下找到了该名称。此外,项目名称中没有空格。
我忘记了一步吗?
感谢您的帮助。
答案 0 :(得分:8)
确保从.m Objective-C文件而不是.h头文件导入-Swift.h
文件。 docs只讨论从.m:
...将您的Swift代码的Xcode生成的头文件导入任何您想要使用Swift代码的Objective-C .m文件。
在构建期间生成-Swift.h
文件,我发现从.h文件导入它总是失败,即使我知道文件存在。因为它是由构建生成的,所以我猜测它在编译器筛选标题时被清除,并在编译.swift文件后重新生成。