0

我目前工作的项目将 Objective-C 和 Swift 都与桥接头链接在一起,一切正常。但在一种情况下,Obj-c 中的这个特定 viewController.h 已经快速导入。当我尝试在另一个 Swift 控制器中访问此 viewController.h 时,它显示“<#project-name#>-swift.h”文件未找到

指导我如何快速访问这个 objC 文件:(

编辑:详细!!

我有一个 viewController.h 文件,我通过导入 '<#project-name#>-swift.h' 实现了 swift 模型

但是当我尝试从 SecondViewController.swift 访问这个 viewController.h 时,我必须将它添加#import "viewController.h"到我的项目的桥接头中。如果我这样做,我会收到此错误 '<#project-name#>-swift.h' file not found

4

1 回答 1

1

如果我对您所做的事情的理解是正确的,那么问题在于projectname-Swift.h标头包含在标头 ( viewController.h) 中,而标头 ( ) 又导入到桥接头中。

https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html#//apple_ref/doc/uid/TP40014216-CH10-ID122上的文档讨论了在文件中包含生成的*-Swift.h标头.m,而不是在标题中,表明它不应该包含在标题中以避免循环依赖。您仍然可以将其包含在标头中,但如果标头包含在桥接头中,则会中断。

我会导入*-Swift.hviewController.m而不是viewController.h。如果您需要将 Swift 类型作为属性、参数或返回类型引用viewController.h,那么您可以使用前向声明,例如

@class MySwiftModelClass;

如果类在viewController.hextend中声明MySwiftModelClass,那么事情会变得有点棘手。如果是这种情况,请发布更具体的简短示例。

于 2017-05-27T01:55:03.090 回答