我在我的程序中使用alamofire来打电话给我并获取数据。它存储在可以从其他类调用的函数中。该函数如下所示:
static func searchSong() {
Alamofire.request(*urlhere*, callback: { response in
parseData(request)
}
}
然后方法parseData会通过返回给我的内容。现在我想要发生的是searchSong()实际上能够在我在parseData中解析它时返回数据。如何在parseData结束时获取我所拥有的内容并将其返回到searchSong()。
我有打印语句告诉我已经得到了响应并且parseData工作正常,但我不知道如何将我在parseData末尾的内容返回到searchSong,以便searchSong可以返回所需的信息从它被称为。
答案 0 :(得分:0)
让你的searchSong()函数接受一个回调(要求回调采用parseData类型的params),然后当alamofire请求完成时,调用回调并将调用传回parseData。我相信你已经知道但是alamofire请求是异步的。处理这类问题的最标准方法是调用回调。
答案 1 :(得分:0)
Alamofires'调用是异步调用的,这意味着您的searchSong函数返回值将始终为Void。 如果你想"返回"响应值,将一个回调作为参数添加到searchSong
func searchSong(returnCallback: (Any) -> Void){
Alamofire.request(*urlhere*, callback: { response in
// Any is the type of your returning element.
returnCallback(/* resposne or wathever you want to return */)
}
}
然后无论你在哪里调用searchSong,你都会有这样的结构:
self.searchSong { (response) in
/* code here */
// here on response you have the request returning value
}
请注意,所有这些过程都是异步的,这是Apple处理HTTP请求的方式,所以Alamofire遵循这一点。