But enums with associated values do not carry that across the boundary though.The Swift:public enum MyError: ErrorType { case Code(code: Int) case Message(code: Int, message: String) } @objc public class MyType : NSObject { public func throwException(type: Int) throws { if type == 0 { throw MyError.Code(code: type) } else { throw MyError.Message(code: type, message: Hello!) } } }The ObjC:int main() { MyType *type = [[MyType alloc] init]; NSError *error1; if ([type throwException:0 error:&error1] == NO) { NSLog(@error: %@, error1); } NSError *error2; if ([type throwException:123 error:&error2] == NO) { NSLog(@error: %@, error2); } }The NSError's domain is set to the module name plus type name of the error, and the code is set to the ordinal offset of the enum value. However, the code and message data is lost. Is that just a bug?