循环引用,Obj-C-> Swift,Swift-> Obj-C

时间:2018-07-04 16:21:25

标签: ios objective-c swift circular-reference

我正在尝试创建一个具有枚举类型属性的Objc类,其中枚举类型是快速创建的。之后,我想在Swift中使用Objc类。

(快速)枚举:

git fetch

(Objc)类

import Foundation

@objc enum AffectsUnit:Int {
    case time
    case person
    case group
}

Objc类的方法文件为空。

到目前为止,太好了。没有编译器警告。

因为我也想在Swift中使用我的objc类。我需要将类导入到Bridging-Header.h中。

#import "JSONModel.h"
#import "MyApp-Swift.h"
@interface AddPlayerToTime : JSONModel
@property (nonatomic) AffectsUnit affectsUnit;
@end

现在,我的快速代码可以看到AddPlayerToTime类,但是该项目将不再编译。我得到的错误是:

#import "AddPlayerToTime.h"

我有99%的把握会因为循环引用而中断。由于我的Swift代码正在导入AddPlayerToTime类,而AddPlayerToTime正在导入我的Swift代码。但是我不知道该如何解决。关于此循环参考资料的所有文章,似乎都建议使用@class声明。但是由于我试图引用一个枚举而不是一个类,所以这不是我的解决方案。

我是否想完成某件事,简单的事情无法完成?

编辑1: 请注意:我希望在Swift方面保留尽可能多的代码。

1 个答案:

答案 0 :(得分:1)

您应该能够将枚举减法移至Obj-C端,并且仍对Swift可见,如下所示:

typedef NS_ENUM(NSInteger, AffectsUnit)
{
    AffectsUnitTime,
    AffectsUnitPerson,
    AffectsUnitGroup
};