乐趣区

关于objective-c: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)
退出移动版