在swift中导入swift链接的objc类

时间:2017-05-26 12:24:59

标签: ios objective-c swift3 objc-bridging-header

我目前工作的项目将Objective-C和Swift与桥接头连接起来,一切正常。但在一个案例中,Obj-c中的这个特定的viewController.h已经被swift导入了。当我尝试在另一个Swift控制器中访问此viewController.h时,它说'< #project-name#> -swift.h'文件未找到

指导我如何在swift中访问此objC文件:(

编辑:详细!!

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

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

1 个答案:

答案 0 :(得分: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.h中导入viewController.m,而不是viewController.h。如果需要在viewController.h中引用Swift类型作为属性,参数或返回类型,那么可以使用前向声明,例如

@class MySwiftModelClass;

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