首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >循环参考,Obj-C -> Swift,Swift -> Obj-C

循环参考,Obj-C -> Swift,Swift -> Obj-C
EN

Stack Overflow用户
提问于 2018-07-04 16:21:24
回答 1查看 326关注 0票数 1

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

(Swift)Enum:

代码语言:javascript
运行
复制
import Foundation

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

(Objc)类

代码语言:javascript
运行
复制
#import "JSONModel.h"
#import "MyApp-Swift.h"
@interface AddPlayerToTime : JSONModel
@property (nonatomic) AffectsUnit affectsUnit;
@end

Objc类有一个空的方法文件。

到现在为止还好。没有编译器警告。

因为我还想在Swift中使用objc类。我需要在桥接-Header.h中导入类。

代码语言:javascript
运行
复制
#import "AddPlayerToTime.h"

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

代码语言:javascript
运行
复制
Unknown type name 'AffectsUnit'

我百分之九十九肯定是因为循环引用而打破的。因为我的快速代码是导入AddPlayerToTime类,而AddPlayerToTime是导入我的快速代码。但我不知道怎么解决这个问题。所有关于这个循环参考资料的帖子,似乎都建议使用@class声明。但是,由于我试图引用一个枚举,而不是一个类,这对我来说不是一个解决方案。

我是不是想要完成某件事,这个简单的事情是做不到的?

Edit1:请注意:我希望尽可能多的代码,保持在Swift方面。

EN

回答 1

Stack Overflow用户

发布于 2018-07-04 16:33:58

您应该能够将枚举下垂移到Obj一侧,并且仍然可以让Swift看到它,如下所示:

代码语言:javascript
运行
复制
typedef NS_ENUM(NSInteger, AffectsUnit)
{
    AffectsUnitTime,
    AffectsUnitPerson,
    AffectsUnitGroup
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51177766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档