我正在使用Objective-C开发的SDK。我的应用程序是混合的(支持Objc和Swift),我需要使用SDK的completionBlock。在SDK方面,它被定义为,
typedef void (^SomethingCompletionBlock)(NSArray<id<Something> > *_Nullable result, NSError *_Nullable error);
在App方面,我需要使用like,
SDKService.fetchSomething(withModel: model) { (result, error) in
if error != nil {
completionBlock(result, error?)
}
}
我想知道我的Swift部分中completionBlock的签名是什么?我正在尝试类似下面的内容,但却收到错误。
typealias SomethingSearchCompletionBlock = (result: Array<Something>?, error: Error?)
错误:
无法调用非函数类型的值 &#39; SomethingSearchCompletionBlock&#39; (又名&#39;(结果: 可选&gt;,错误:可选)&#39;)
答案 0 :(得分:2)
您必须添加Void
返回值,并且不需要参数标签
typealias SomethingSearchCompletionBlock = (Array<Something>?, Error?) -> Void
答案 1 :(得分:2)
这可能会有所帮助
typealias SomethingCompletionBlock = (_ result: [Something]?, _ erro: Error?) -> Void