Alamofire 库 Void 不能转换为 Response<AnyObject, NSError> -> Void
Posted
技术标签:
【中文标题】Alamofire 库 Void 不能转换为 Response<AnyObject, NSError> -> Void【英文标题】:Alamofire library Void is not convertible to Response<AnyObject, NSError> -> Void 【发布时间】:2015-11-26 05:56:27 【问题描述】:我有一个将 JSON 结果设置为 NSDictionary 的函数。然后它使用这个值来调用其他一些函数。我正在使用 Alamofire,并且由于我在 Swift 1 中编写了这个应用程序,所以这已经发生了一些变化,这给了我错误。
函数如下:
func fetchApiData()
// I believe this is the problem code below.
let _requestURL1 = Alamofire.request(.GET,dataSourceURL!)
_requestURL1.responseJSON (_requestUrl, _requestResponse, _objJSON1, error) -> Void in
if(_objJSON1 != nil)
let jsonResult1 = _objJSON1 as NSDictionary;
self.checkIP(jsonResult1)
self.checkGeo(jsonResult1)
else
return
let _requestURL2 = Alamofire.request(.GET,self.dataSourceURL2!)
_requestURL2.responseJSON (_requestUrl, _requestResponse, _objJSON2, error) -> Void in
if(_objJSON2 != nil)
let jsonResult2 = _objJSON2 as NSDictionary;
self.checkDNS(jsonResult2)
NSTimer.scheduledTimerWithTimeInterval(self.refreshFrequencyInt, target: self, selector: Selector("fetchApiData"), userInfo: nil, repeats: false)
else
return
显然现在,这一行:
_requestURL1.responseJSON (_requestUrl, _requestResponse, _objJSON1, error) -> Void in
给我这个错误:
'(_, _, _, _) -> Void' is not convertible to 'Response<AnyObject, NSError> -> Void'
我已经尝试过解决此问题的方法,但我似乎无法让代码以与以前相同的方式工作。
请帮忙! :)
【问题讨论】:
【参考方案1】:试试这个:
Alamofire.request(.GET, url)
.responseJSON(completionHandler:
(JSON) -> Void in
let JSONDictonary = JSON.result.value as! NSDictionary
let photoInfos = (JSONDictonary.valueForKey("photos") as! [NSDictionary]).filter(
($0["nsfw"] as! Bool) == false
).map
PhotoInfo(id: $0["id"] as! Int, url: $0["image_url"] as! String)
【讨论】:
以上是关于Alamofire 库 Void 不能转换为 Response<AnyObject, NSError> -> Void的主要内容,如果未能解决你的问题,请参考以下文章
如何将 AFNetworking 代码转换为 Alamofire?
在 Alamofire responseJSON 理解中返回 Void 的结构体
Alamofire 4从“(_) throws ->()”类型的抛出函数到非抛出函数类型“(DataResponse <Any>)-> Void”的无效转换
将 Alamofire 完成处理程序转换为 Async/Await |斯威夫特 5.5,*