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,*

如何将 json 数据从 alamofire 转换为 swift 对象

安装库 Alamofire 可能出现错误