我有一个将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'
我已经尝试过针对此问题的解决方案,但我似乎无法使代码以与以前相同的方式运行。
请帮忙! :)
答案 0 :(得分:0)
试试这个:
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)
}