How to use Objective-C enum in Swift [duplicate]
I think this is a bug because Swift should define ==
for C enums or an "to Int" conversion but it doesn't.
The simplest workaround is redefining your C enum as:
typedef NS_ENUM(NSUInteger, JapaneseFoodType) {
JapaneseFoodType_Sushi = 1,
JapaneseFoodType_Tempura = 2,
};
which will allow LLVM to process the enum and convert it to a Swift enum (NS_ENUM
also improves your Obj-C code!).
Another option is to define the equality using reinterpret hack:
public func ==(lhs: JapaneseFoodType, rhs: JapaneseFoodType) -> Bool {
var leftValue: UInt32 = reinterpretCast(lhs)
var rightValue: UInt32 = reinterpretCast(rhs)
return (leftValue == rightValue)
}
You should use NS_ENUM
macro to make your enums Swift-compatible.
Also note that your enum literals should be accessed like JapaneseFoodType._Sushi
, so it's probably a good idea to remove the underscore.