枚举Objective-C和Swift之间的互操作性

时间:2014-09-21 21:33:00

标签: objective-c enums swift

我将部分项目移植到Swift,发现枚举不可互操作。

使用枚举的任何属性和函数都不会暴露给objective-c,因为枚举在objective-c上没有等价。

即使enum属于NSInteger类型,枚举也不会被曝光。

如何解决这个互操作性问题,让快速课程尽可能干净?

2 个答案:

答案 0 :(得分:3)

Swift 2:在Swift 2中,您现在可以将枚举公开给Objective-C。使枚举非泛型,继承自简单的数字类型(如Int),并且不使用关联的值。然后它将显示在Objective-C中,其中枚举的名称预先设置为案例,因此它看起来像一个Objective-C枚举。

编辑:为确保显示,请使用@objc对其进行注释。如果有任何问题阻止它自动桥接,你将收到编译器错误。

Swift 1.x: 答案是你不能,至少目前不是。如果要与枚举互操作,则需要在Objective-C中声明它们。

正如Nate所说,使用NS_ENUM,Swift会将定义拉为enum,并从值中删除前缀。

答案 1 :(得分:0)

Here是一个简单的Xcode项目,它具有由目标C访问的Swift枚举和由Swift访问的目标C枚举