前段时间我同学写的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)