【发布时间】:2018-12-18 06:28:59
【问题描述】:
我正在尝试在我的项目中使用Moya Networking。我正在使用这个example。该示例在第 56 行的视图控制器中发出 moya 请求以连接到服务器,并在第 72 行和第 78 行中使用回调方法
func uploadGiphy() {
provider.request(MultiTarget(Giphy.upload(gif: Giphy.animatedBirdData)),
callbackQueue: DispatchQueue.main,
progress: progressClosure,
completion: progressCompletionClosure)
}
我想在 NetworkHelper.swift 中而不是我的视图控制器中编写这个函数,但是在我的视图控制器中使用它的两个回调方法(第 72 行和第 78 行)。
所以我在NetworkHelper中写了这个函数:
static func getUsers(amount:Int=2,
gender:Gender = .Male,
success successCallback: @escaping ([UserModelMain]) -> Void,
error errorCallback: @escaping (Swift.Error) -> Void,
failure failureCallback: @escaping (Moya.MoyaError) -> Void,
progress progressClosure: @escaping (Moya.ProgressResponse) -> Void,
progressCompletion progressCompletionClosure: @escaping (Moya.Completion) -> Void)
{
provider.request(.getUsers(amount: amount, gender: gender),
callbackQueue: DispatchQueue.main,
progress: progressClosure,
completion: progressCompletionClosure)
}
显示错误:
无法转换类型 '((Result) -> Void) 的值 -> Void' 到预期的参数类型'Completion'(又名'(Result) -> ()')
我认为我的函数 getUsers 写错了。我搞砸了。我不擅长闭包。
请帮忙。
Moya网络库请求函数源码:
/// Designated request-making method.
Returns a `Cancellable` token to cancel the request later.
@discardableResult
open func request(_ target: Target,
callbackQueue: DispatchQueue? = .none,
progress: ProgressBlock? = .none,
completion: @escaping Completion) -> Cancellable {
let callbackQueue = callbackQueue ?? self.callbackQueue
return requestNormal(target, callbackQueue: callbackQueue, progress: progress, completion: completion)
}
【问题讨论】: