我正在整理一个大型遗留的Objective-C库,以便在新的Swift项目中使用。
现在,像-initWithContentsOfFile:encoding:error:(NSError*)err
这样的Objective-C方法通常会在Swift端转换为init(contentsOfFile path: String, encoding enc: UInt) throws
。
但是在这个遗留代码库中,我们有一个自定义错误子类@interface MyError : NSError
。这似乎打破了这种自动错误转换,因此像-initWIthConfig:error:(MyError**)err
这样的方法仅被Swift视为
init(config: [String:Any], error: AutoreleasingUnsafeMutablePointer<MyError?>)
- 这没用!
现在我看到Swift方面有一个ErrorType
协议,但这似乎与此无关。我自己的错误类型(MyError
)已经从NSError
继承而且需要在Objective-C方面保持这种状态。
如何让Swift将我的自定义错误子类识别为错误类型,以便将使用它的每个方法都处理为throws
?我能够编辑遗留框架,但我不确定如何为转换注释这些方法。