我有这个功能:
func getOptionalConfigurations(_ configurations: ([String]?, Error?) -> Void) {
// DO SOMETHING
}
Run Code Online (Sandbox Code Playgroud)
我需要将它包装在另一个中,例如:
func retrieveConfigurations(_ completion:@escaping (([String]?) throws -> Void)) rethrows {
getOptionalConfigurations { (configurations: [String]?, error: Error?) in
do {
try completion(configurations)
} catch {
throw error
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我收到了这个错误:
从类型“([String]?, Error?) throws -> ()”的抛出函数到非抛出函数类型“([String]?, Error?) -> Void”的转换无效
我同意这个错误,但我仍然想抛出这个错误!我没有机会更改此功能:getOptionalConfigurations。
编辑: 第一个函数是 ObjC 函数的翻译,我最多可以修改方法签名,添加类似NS_SWIFT的内容
- (void)getOptionalConfigurations:(void (^)(NSArray <NSString *> * _Nullable configurations, NSError * _Nullable error))completion;
Run Code Online (Sandbox Code Playgroud)