在Swift 4中使用PromiseKit进行API调用:
let apiCall = ApiManager.shared.fetchActors()
apiCall.then { actors -> Void in
self.dataSourceArray = actors
self.tableView.reloadData()
}.catch { error -> Void in
}
我收到此错误:
无法转换类型'() - >的值虚空'预期参数类型'() - > _'
如何解决此问题?
答案 0 :(得分:4)
使用 .done 代替使用。然后。
答案 1 :(得分:2)
解决方案:
func fetchActorsFromApi () -> Promise<[Actor]> {
return Promise<[Actor]> { seal in
return Alamofire.request(API_URL).validate().responseString(completionHandler: {
response in
switch (response.result) {
case .success(let responseString1):
print (responseString1) // should be converted into the modelclass
let actorResponse = ActorApiResponse(JSONString: "\(responseString1)")!
seal.fulfill(actorResponse.actors!)
case .failure(let error):
print (error)
seal.reject(error)
}
})
}
}
答案 2 :(得分:2)
let apiCall = ApiManager.shared.fetchActorFromAPI()
let _ = apiCall.done {
actors -> Void in
self.dataSource = actors
self.myTableView.reloadData()
}.catch {
error -> Void in
}
使用此。在新版本的PromiseKit .done()函数中可以做到这一点。文档:https://github.com/mxcl/PromiseKit
答案 3 :(得分:1)
将.catch { error -> Void in
替换为.catch { error in