我在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文件有点危险,所以这不是我的首选方法。
感谢任何指导。
谢谢! 罗布