我是新手,请向我建议如何为此服务功能创建完成处理程序
func postRequest(router: Router, postData: [String: String], completion: @escaping (Result<Int, Error>) -> ()) { ......
我被困在这里
ServiceLayer.postRequest(router: Router.register, postData: postData) { (<#Result<Int, Error>#>) in
return ....
}
答案 0 :(得分:1)
只是要求您给闭包参数起一个名字。您可以这样做:
ServiceLayer.postRequest(router: Router.register, postData: postData) { result in
}
答案 1 :(得分:1)
Result
有.success
和.failure
的情况,因此您可以像使用->
Result
postRequest(router: Router.register, postData: postData) { result in
switch result {
case .success(let value):
// Do something
case .failure(let error):
// Do something
}
}
奖励
答案 2 :(得分:0)
ServiceLayer.postRequest(router: Router.register, postData: postData) { (response) in
switch response{
case .success(let id):
print(id)
//do something with return id
case .failure(let error):
//error handle
}
}
答案 3 :(得分:0)
已经有几个正确答案。 如果您有2个具有不同回调的类似发布函数。 F.e
func postRequest(router: Router, postData: [String: String], completion: @escaping (Result<Int, Error>) -> Void) {}
func postRequest(router: Router, postData: [String: String], completion: @escaping (Error) -> Void) {}
然后您可以像这样指定通话类型:
ServiceLayer.postRequest(router: Router.register, postData: postData) { (result: Result<Int, Error>) in
}
ServiceLayer.postRequest(router: Router.register, postData: postData) { (error: Error) in
}