我想把responseJSON还给你
static func getAllPersons(completionhandler:@escaping (Any) -> ()){
let URL = baseURL + "api/person"
Alamofire.request(URL).responseJSON {
response in
completionhandler(response.result.value as Any)
}
}但是,如果我试图将responseJSON存储在"res“中,它将无法工作:
var res: Any = ""
PersonResource.getAllPersons{ (result) in
res = result
}
print(res)诚挚的问候
发布于 2017-03-14 08:30:25
var res: Any = ""
PersonResource.getAllPersons{ (result) in
res = result
print(res)
}将print语句放入其中,它将打印结果。
为什么?
PersonResource.getAllPersons是一个异步调用,因此print( res )甚至在PersonResource.getAllPersons的完成块执行和设置res之前就被执行。
发布于 2017-03-14 08:33:24
response.result.value是可选的,所以尝试返回任何?但这是更好的方法:
static func getAllPersons(completionhandler:@escaping ([String: Any]?, Error?) -> ()){
let URL = baseURL + "api/person"
Alamofire.request(URL).responseJSON {
response in
if let json = response.result.value as? [String: Any] {
completionhandler(json, nil)
}
else if let error = response.result.error as Error? {
completionHandler(nil, error)
}
}
}https://stackoverflow.com/questions/42781026
复制相似问题