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