在Swift中使用Objective-C中的NS_ENUM

时间:2015-12-03 15:14:55

标签: ios objective-c swift enums

我在Objective-C项目中使用第三方库,其枚举定义为:

typedef NS_ENUM(NSUInteger, RJBEvent)
{
    RJB_EVENT_OK = 1,
    RJB_EVENT_ERROR=2,
    RJB_EVENT_START = 4,
};

然后在Objective-C中,我可以执行以下操作:

    [self.rjbLib listenForEvents:(RJB_EVENT_START|RJB_EVENT_OK|RJB_EVENT_ERROR)];

作为一个自学Swift的练习,我移植了应用程序。一切顺利,直到我遇到使用这个枚举。有很多关于如何(或如何不)在Swift中使用枚举的信息,但很少描述这种位掩码式的用法。我已经得到了这个,并且它已编译,但我没有收到预期的事件通知。

let rjbEventsMask : UInt32 = UInt32(RJBEvent.RJB_EVENT_OK.rawValue | 
    RJBEvent.RJB_EVENT_ERROR.rawValue |
    RJBEvent.RJB_EVENT_START.rawValue)

我确实看到有关NSHipster的建议,我可能需要更改第三方头文件以使用NS_OPTIONS。我会尝试这样做,但更改开发人员提供的.h文件有点危险,所以这不是我的首选方法。

感谢任何指导。

谢谢! 罗布

0 个答案:

没有答案