我将部分项目移植到Swift,发现枚举不可互操作。
使用枚举的任何属性和函数都不会暴露给objective-c,因为枚举在objective-c上没有等价。
即使enum属于NSInteger类型,枚举也不会被曝光。
如何解决这个互操作性问题,让快速课程尽可能干净?
答案 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枚举