Swift怎样使用OC枚举、多个枚举,以及OC多枚举实现。

前段时间我同学写的OC版本的SDK给第三方用,第三方用Swift写的项目,不会使用Swift去调用OC的枚举,后来我同学找到我,我就给他写了一下,废话不多说,直接上代码。

OC枚举:
typedef NS_ENUM(NSInteger, SwiftUseOCEnum) {

SwiftUseOCEnumNone = 1<<0,
SwiftUseOCEnumOne = 1<<1,
SwiftUseOCEnumTwo = 1<<2,
SwiftUseOCEnumThree = 1<<3,

};

@interface Test : NSObject

-(void)test:(SwiftUseOCEnum)ocEnum;

@end

OC枚举多枚举实现:
-(void)test:(SwiftUseOCEnum)ocEnum{


if(ocEnum == SwiftUseOCEnumNone){
 NSLog(@"SwiftUseOCEnumNone");
}else if (ocEnum == SwiftUseOCEnumOne) {
 NSLog(@"SwiftUseOCEnumOne");
}else if (ocEnum == SwiftUseOCEnumTwo) {
 NSLog(@"SwiftUseOCEnumTwo");
}else if (ocEnum == SwiftUseOCEnumThree) {
 NSLog(@"SwiftUseOCEnumThree");
}else{ //传了多个枚举进来
 if((ocEnum & SwiftUseOCEnumNone) == SwiftUseOCEnumNone){
 NSLog(@"多个枚举包含了SwiftUseOCEnumNone");
 }
 if((ocEnum & SwiftUseOCEnumOne) == SwiftUseOCEnumOne){
 NSLog(@"多个枚举包含了SwiftUseOCEnumOne");
 }
 if((ocEnum & SwiftUseOCEnumTwo) == SwiftUseOCEnumTwo){
 NSLog(@"多个枚举包含了SwiftUseOCEnumTwo");
 }
 if((ocEnum & SwiftUseOCEnumThree) == SwiftUseOCEnumThree){
 NSLog(@"多个枚举包含了SwiftUseOCEnumThree");
 }
}

}

Swift使用OC枚举多枚举:
//单个OC枚举使用

 let none = SwiftUseOCEnum.init(rawValue: SwiftUseOCEnum.none.rawValue) ?? SwiftUseOCEnum.none
 
 //多个OC枚举使用
 let oneAndTwo = SwiftUseOCEnum.init(rawValue: (SwiftUseOCEnum.one.rawValue | SwiftUseOCEnum.two.rawValue)) ?? SwiftUseOCEnum.none
 
 let testInstance = Test()
 testInstance.test(none)
 testInstance.test(oneAndTwo)
作者:唐伯虎点蚊香原文地址:https://segmentfault.com/a/1190000041633514

%s 个评论

要回复文章请先登录注册